Cod sursa(job #2588438)

Utilizator k2e0e0w3qDumitrescu Gheorghe k2e0e0w3q Data 24 martie 2020 19:57:25
Problema Paduri de multimi disjuncte Scor 100
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.61 kb
#include <stdio.h>

int t[100001];
int _find (int x) {
    if (!t[x])
        return x;
    return t[x]=_find(t[x]);
}

void _union (int i, int j) {
    int p1=_find(i),
        p2=_find(j);
    if (p1!=p2)
        t[p2]=p1;
}

int main () {
    FILE *fin=fopen ("disjoint.in", "r"),
         *fout=fopen ("disjoint.out", "w");
    int n, m, key, i, j;
    fscanf (fin, "%d%d", &n, &m);
    for (; m; m--) {
        fscanf (fin, "%d%d%d", &key, &i, &j);
        if (key==1)
            _union(i, j);
        else
            fprintf (fout, _find(i)==_find(j)?"DA\n":"NU\n");
    }
    return 0;
}