Cod sursa(job #1267778)
| Utilizator | Data | 20 noiembrie 2014 12:01:24 | |
|---|---|---|---|
| Problema | Paduri de multimi disjuncte | Scor | 70 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.82 kb |
#include<cstdio>
using namespace std;
int i,n,m,op,x,y,fadar[100002],t1,t2;
int tata(int nod)
{
while(nod!=fadar[nod])
{
nod=fadar[nod];
}
return nod;
}
int main()
{
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
{
fadar[i]=i;
}
for(i=1;i<=m;i++)
{
scanf("%d%d%d",&op,&x,&y);
if(op==1)
{
t1=tata(x);
t2=tata(y);
fadar[t1]=t2;
}
if(op==2)
{
t1=tata(x);
t2=tata(y);
if(t1!=t2)
{
printf("NU\n");
}
else
{
printf("DA\n");
}
}
}
return 0;
}
