Pagini recente » Cod sursa (job #2959313) | Cod sursa (job #433412) | Cod sursa (job #606901) | Cod sursa (job #2913735) | Cod sursa (job #897908)
Cod sursa(job #897908)
#include <cstdio>
#include <cassert>
const int nmax=100005;
int v[nmax];
int up(int a,int b)
{
if (v[a]!=v[v[a]])
v[a]=up(v[a],b);
else if (b)
v[a]=b;
return v[a];
}
int main()
{
int n=0,m=0,i=0,c=0,x=0,y=0;
assert(freopen("disjoint.in","r",stdin));
assert(freopen("disjoint.out","w",stdout));
assert(scanf("%d%d",&n,&m));
for (i=1; i<=n; ++i)
v[i]=i;
for (i=0; i<m; ++i)
{
assert(scanf("%d%d%d",&c,&x,&y));
if (v[x]!=v[v[x]])
v[x]=up(x,0);
if (v[y]!=v[v[y]])
v[y]=up(y,0);
if (c==1 && v[x]!=v[y])
v[y]=up(v[y],v[x]);
else if (c==2 && v[x]==v[y])
assert(printf("DA\n"));
else if (c==2 && v[x]!=v[y])
assert(printf("NU\n"));
}
return 0;
}