Cod sursa(job #1399328)
Utilizator | Butnaru George Butnaru | Data | 24 martie 2015 18:13:49 |
---|---|---|---|
Problema | Paduri de multimi disjuncte | Scor | 70 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.47 kb |
#include <stdio.h>
int tip,x,y,n,m,i,t[100010];
int findroot(int x)
{
while (t[x]>0) x=t[x];
return x;
}
int main(){
FILE *fin,*fout;
fin=fopen("disjoint.in","r");
fout=fopen("disjoint.out","w");
fscanf(fin,"%d%d",&n,&m);
for (i=1;i<=m;i++){
fscanf(fin,"%d%d%d",&tip,&x,&y);
x=findroot(x);
y=findroot(y);
if (tip==1) t[x]=y; else
if (x==y) fprintf(fout,"DA\n"); else fprintf(fout,"NU\n");
}
fclose(fin);
fclose(fout);
return 0;
}