Cod sursa(job #2562158)

Utilizator s.gabi7Dumitrescu Daniel s.gabi7 Data 29 februarie 2020 12:32:22
Problema Paduri de multimi disjuncte Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.75 kb
#include <stdio.h>
#define N 100001

int parent[N];
int _find (int x) {
    if (!parent[x])
        return x;
    return parent[x]=_find(parent[x]);
}

void _union (int x, int y) {
    int p1=_find(x),
        p2=_find(y);
    if (p1!=p2)
        parent[p2]=p1;
}

int main () {
    freopen ("disjoint.in", "r", stdin);
    freopen ("disjoint.out", "w", stdout);
    int n, m, x, y;
    scanf ("%d%d", &n, &m);
    for (; m; m--) {
        getchar();
        switch (getchar()) {
        case '1':
            scanf ("%d%d", &x, &y);
            _union(x, y);
            break;
        case '2':
            scanf ("%d%d", &x, &y);
            printf (_find(x)==_find(y)?"DA":"NU");
            break;
        }
    }
    return 0;
}