Cod sursa(job #759197)

Utilizator test13test13 test13 Data 17 iunie 2012 09:21:32
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.56 kb
#include <cstdio>
#define MAX 100001

int n,rad[MAX];

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;
}