Pagini recente » Cod sursa (job #2676728) | Cod sursa (job #2837875) | Cod sursa (job #2508567) | Cod sursa (job #1150456) | Cod sursa (job #1942982)
#include <cstdio>
using namespace std;
int tata[100002],niv[100002];
int myfind(int a)
{
int ok=1;
while(ok)
if(tata[a])
a=tata[a];
else ok=0;
return a;
}
void myunion(int t1,int t2)
{
if(niv[t1]<niv[t2])
tata[t1]=t2;
else if(niv[t2]<niv[t1])
tata[t2]=t1;
else tata[t2]=t1,niv[t1]++;
}
int main()
{
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
int n,m,i,p,x,y,t1,t2;
scanf("%d%d",&n,&m);
for(i=1;i<=m;i++)
{
scanf("%d%d%d",&p,&x,&y);
t1=myfind(x);
t2=myfind(y);
if(p==1)
myunion(t1,t2);
else
if(t1==t2)
printf("DA\n");
else printf("NU\n");
}
return 0;
}