Pagini recente » Cod sursa (job #2272258) | Cod sursa (job #1650672) | Cod sursa (job #709872) | Cod sursa (job #1519090) | Cod sursa (job #1635482)
#include <iostream>
#include <cstdio>
using namespace std;
int n,m1,m[100008];
inline int rad(int nod)
{
int rad,strt=nod,aux;
while(m[nod]!=nod) nod=m[nod]; rad=nod;
while(m[strt]!=strt) { strt=m[strt]; m[strt]=rad; }
return rad;
}
inline void unite(int v1,int v2)
{
m[v2]=m[v1];
}
int main()
{
int i,op,v1,v2;
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
scanf("%d%d",&n,&m1);
for(i=1;i<=n;i++) m[i]=i;
for(;m1;m1--)
{
scanf("%d%d%d",&op,&v1,&v2);
if(op==2)
{
if(rad(v1)==rad(v2)) printf("DA\n");
else printf("NU\n");
} else unite(v1,v2);
}
fclose(stdin);
fclose(stdout);
return 0;
}