Pagini recente » Cod sursa (job #1288070) | Cod sursa (job #680791)
Cod sursa(job #680791)
#include<cstdio>
#define maxn 100005
int RG[maxn],TT[maxn];
int n,m;
int find(int x)
{
int R,y;
for(R=x;TT[R]!=R;R=TT[R]);
for(;TT[x]!=x;)
{
y=TT[x];
TT[x]=R;
x=y;
}
return R;
}
void unite(int x,int y)
{
if(RG[x]>RG[y])
TT[y]=x;
else TT[x]=y;
}
int main()
{
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
scanf("%d %d",&n,&m);
for(int i=1;i<=n;i++)
{
RG[i]=1;
TT[i]=i;
}
for(int i=1;i<=m;i++)
{
int op,x,y;
scanf("%d %d %d",&op,&x,&y);
if(op==1)
{
unite(x,y);
}
else
{
if(find(x)==find(y))
printf("DA\n");
else printf("NU\n");
}
}
}