Pagini recente » Cod sursa (job #2762868) | Cod sursa (job #2315697) | Cod sursa (job #1507192) | Cod sursa (job #1871787) | Cod sursa (job #1146924)
/*
Keep It Simple!
*/
#include<stdio.h>
#define MaxN 100001
int N,M,Tree[MaxN],type,x,y;
int Level[MaxN];
void Initialise_Tree()
{
for(int i=1;i<=M;i++)
{
Tree[i] = i;
Level[i] = 1;
}
}
void Add(int x,int y)
{
if(Level[x] >= Level[y])
{
Tree[y] = x;
Level[x] += 1;
}
else
Tree[x] = y;
}
int Find(int node)
{
int root;
for(root = node; Tree[root] != root; root = Tree[root]);
for(;node != root;)
{
int aux = Tree[node];
Tree[node] = root;
node = aux;
}
return root;
}
void Query(int x,int y)
{
if( Find(x) == Find(y) )
printf("DA\n");
else
printf("NU\n");
}
int main()
{
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
scanf("%d%d",&N,&M);
Initialise_Tree();
while(M--)
{
scanf("%d%d%d",&type,&x,&y);
if(type == 1)
Add(Find(x),Find(y));
else if(type == 2)
Query(x,y);
}
}