Cod sursa(job #440966)

Utilizator OdinSandu Bogdan-Mihai Odin Data 12 aprilie 2010 18:21:09
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.55 kb
#include<stdio.h>
int v[100005],n,m,i,type,x,y,Tx,Ty;
int search_tata(int fiu)
{
	int t,tp;
	t=tp=fiu;
	while(v[t]!=t)t=v[t];
	while(v[tp]!=tp)
	{
		tp=v[tp];
		v[tp]=t;
	}
	return t;
}
int main()
{
	freopen("disjoint.in","r",stdin);
	freopen("disjoint.out","w",stdout);
	scanf("%d %d",&n,&m);
	for(i=1;i<=n;i++)
		v[i]=i;
	for(i=1;i<=m;i++)
	{
		scanf("%d %d %d",&type,&x,&y);
		Tx=search_tata(x);
		Ty=search_tata(y);
		if(type==1)
			v[Tx]=Ty;
		if(type==2)
			if(Tx==Ty)printf("DA\n");
			else printf("NU\n");
	}
	return 0;
}