Pagini recente » Cod sursa (job #1752003) | Cod sursa (job #128887) | Cod sursa (job #382350) | Cod sursa (job #1731106) | Cod sursa (job #1096814)
#include <fstream>
#define NMAX 100005
using namespace std;
FILE* f=freopen("disjoint.in","r",stdin);
FILE* o=freopen("disjoint.out","w",stdout);
int grad[NMAX],parent[NMAX];
int n,m;
int Find(int x)
{
if(parent[x]==x)
return x;
parent[x]=Find(parent[x]);
return parent[x];
}
void Union(int a, int b)
{
if(grad[a]==grad[b])
{
parent[b]=a;
grad[a]+=1;
}
else if(grad[a]>grad[b])
parent[b]=a;
else
parent[a]=b;
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;++i) parent[i]=i;
for(int i=0;i<m;++i)
{
int k,a,b;
scanf("%d%d%d",&k,&a,&b);
if(k==1)
Union(Find(a),Find(b));
else
{
if(Find(a)==Find(b))
printf("DA");
else
printf("NU");
}
}
return 0;
}