Pagini recente » Cod sursa (job #74862) | Cod sursa (job #2087905) | Cod sursa (job #379753) | Cod sursa (job #1163688) | Cod sursa (job #339297)
Cod sursa(job #339297)
#include<cstdio>
int r[100001],t[100001],n,m,x,y;
int T(int x)
{
if(t[x]==x) return x;
return (t[x] = T(t[x]));
}
void connect(int x,int y)
{
T(x);T(y);
if(t[x]!=t[y])
if(r[x]>r[y])
t[t[y]]=t[x];
else
if(r[y]>r[x])
t[t[x]]=t[y];
else
{
t[t[x]]=t[y];
++r[y];
}
}
bool connected(int x,int y)
{
return T(x) == T(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)
t[i]=i;
++m;
while(--m)
{
scanf("%d %d %d",&n,&x,&y);
if(n==1)
connect(x,y);
else
printf(connected(x,y) ? "DA\n" : "NU\n");
}
fclose(stdout);
return 0;
}