Cod sursa(job #781332)

Utilizator my666013Test Here my666013 Data 24 august 2012 10:43:38
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.55 kb
#include <cstdio>
#define Max 100001

int rad[Max],n;

int tata(int x){
    if(x != rad[x])rad[x] = tata(rad[x]);
    return rad[x];
}

int main(){
    int m,c,x,y;

    freopen("disjoint.in","r",stdin);
    freopen("disjoint.out","w",stdout);

    scanf("%d %d",&n,&m);

    for(int i=1;i<=n;i++) rad[i] = i;

    while(m--)
    {
        scanf("%d %d %d",&c,&x,&y);
        switch(c){
            case 1: rad[tata(x)] = tata(y); break;
            case 2: if(tata(x)==tata(y))printf("DA\n"); else
            printf("NU\n");
        }
    }

    return 0;
}