Pagini recente » Cod sursa (job #202581) | Cod sursa (job #1272307) | Cod sursa (job #2402295) | Cod sursa (job #797282) | Cod sursa (job #1803503)
#include <cstdio>
using namespace std;
int v[100001],h[100001];
int Find (int x)
{
if (x==v[x])
{
return x;
}
else
{
v[x]=Find(v[x]);
return v[x];
}
}
void Union (int x,int y)
{
int ii,jj;
ii=Find(x);
jj=Find(y);
if (h[ii]>h[jj])
{
v[jj]=ii;
}
else
{
if (h[ii]<h[jj])
{
v[ii]=jj;
}
else
{
v[ii]=jj;
h[jj]++;
}
}
}
int main()
{
freopen ("disjoint.in","r",stdin);
freopen ("disjoint.out","w",stdout);
int n,m,i,t,a,b;
scanf ("%d %d",&n,&m);
for (i=1; i<=n; i++)
{
v[i]=i;
h[i]=1;
}
for (i=1; i<=m; i++)
{
scanf ("%d %d %d",&t,&a,&b);
if (t==1)
{
Union(a,b);
}
else
{
if (Find(a)==Find(b))
{
printf ("DA\n");
}
else
{
printf ("NU\n");
}
}
}
return 0;
}