Cod sursa(job #1129913)

Utilizator TarabanDragosTaraban Dragos-Petru TarabanDragos Data 28 februarie 2014 10:15:50
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include<cstdio>
int n,q,i,j,t[100100],op,a,b,ta,tb;
FILE *f,*g;
int tata(int x){
    while(t[x]>0){
        x=t[x];
    }
    return x;
}
int main(){
    f=fopen("disjoint.in","r");
    g=fopen("disjoint.out","w");
    fscanf(f,"%d%d",&n,&q);
    for(i=1;i<=n;i++){
        t[i]=-1;
    }
    for(i=1;i<=q;i++){
        fscanf(f,"%d%d%d",&op,&a,&b);
        ta=tata(a);
        tb=tata(b);
        if(op==1){
            if(t[ta]>t[tb]){
                t[ta]+=t[tb];
                t[ta]=tb;
            }
            else{
                t[tb]+=t[ta];
                t[tb]=ta;
            }
        }
        else{
            if(ta==tb)
                fprintf(g,"DA\n");
            else
                fprintf(g,"NU\n");
        }
    }






    fclose(f);
    fclose(g);
    return 0;
}