Pagini recente » Cod sursa (job #1011184) | Cod sursa (job #2221018) | Cod sursa (job #1438305) | Cod sursa (job #2819220) | Cod sursa (job #1144455)
#include <cstdio>
using namespace std;
int t[100010],r[100010],x,y,i,n,m,a,xx,yy;
int caut(int x)
{
int j;
for (j=x; j!=t[j]; j=t[j]);
while(t[x]!=x)
{
int aux=t[x];
t[x]=j;
x=aux;
}
return j;
}
void merge(int x, int y)
{
if (r[x]>r[y])
t[y]=x;
else t[x]=y;
if (r[x]==r[y])
r[y]++;
}
int main()
{
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
scanf("%d%d",&n,&m);
for (i=1; i<=n; ++i)
{
t[i]=i;
r[i]=1;
}
for (i=1; i<=m; ++i)
{
scanf("%d%d%d",&a,&x,&y);
xx=caut(x);
yy=caut(y);
if (a==1) merge(xx,yy);
else
{
if (xx==yy) printf("DA\n");
else printf("NU\n");
}
}
return 0;
}