Cod sursa(job #779725)

Utilizator danielionutCojocaru ionut daniel danielionut Data 18 august 2012 17:04:35
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.49 kb
#include <stdio.h>
#define NMax 100010
const char IN[]="disjoint.in",OUT[]="disjoint.out";
int N,M;
int P[NMax];
int find(int x){
if (x==P[x]) return x;
return (P[x]=find(P[x]));
}
int main()
{
int i,c,x,y;
freopen(IN,"r",stdin);
scanf("%d%d",&N,&M);
for (i=1;i<=N;++i) P[i]=i;
freopen(OUT,"w",stdout);
while (M--)
{
scanf("%d%d%d",&c,&x,&y);
if (c==1)
P[find(x)]=P[find(y)];
else
printf("%s\n",find(x)==find(y) ? "DA" : "NU");
}
fclose(stdout);
fclose(stdin);
return 0;
}