Pagini recente » Cod sursa (job #1764320) | Cod sursa (job #2425857) | Cod sursa (job #2301670) | Cod sursa (job #2113064) | Cod sursa (job #1653524)
#include<cstdio>
int n,m,type,x,y;
int tata[100010];
int sz[100010];
void reuneste(int n1,int n2)
{
int t1=n1;
int t2=n2;
while(tata[t1]!=t1)
{
t1=tata[t1];
}
while(tata[t2]!=t2)
{
t2=tata[t2];
}
if(sz[t1]>sz[t2])
{
sz[t1]+=sz[t2];
tata[t2]=t1;
}
else
{
sz[t2]+=sz[t1];
tata[t1]=t2;
}
}
int exista(int n1,int n2)
{
while(tata[n1]!=n1)
{
n1=tata[n1];
}
while(tata[n2]!=n2)
{
n2=tata[n2];
}
if(n1==n2)
{
return 1;
}
return 0;
}
int main()
{
freopen("disjoint.in","r",stdin);
//freopen("disjoint.out","w",stdout);
scanf("%d %d",&n,&m);
for(int i=1;i<=n;i++)
{
sz[i]=1;
tata[i]=i;
}
for(int i=1;i<=m;i++)
{
scanf("%d %d %d",&type,&x,&y);
if(type==1)
{
reuneste(x,y);
}
else
{
if(exista(x,y)==1)
{
printf("DA\n");
}
else
{
printf("NU\n");
}
}
}
}