Cod sursa(job #389126)

Utilizator AndreiDDiaconeasa Andrei AndreiD Data 31 ianuarie 2010 23:47:30
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include <cstdio>

#define file_in "disjoint.in"
#define file_out "disjoint.out"

int n,m,tata[101001],x,y,tip,a,b;

int find(int x)
{
	while (tata[x]!=x) x=tata[x];
	return x;
}


void uneste(int i, int j)
{
	tata[find(i)]=find(j);
}

int main()
{
	int i;
	freopen(file_in,"r",stdin);
	freopen(file_out,"w",stdout);
	
	scanf("%d %d", &n, &m);
	
	for (i=1;i<=n;++i)
		 tata[i]=i;
	
	while(m--)
	{
		scanf("%d %d %d", &tip, &x, &y);
		
		/*a=find(x);
		b=find(y);*/
		
		if (tip==1)
		{
			uneste(x,y);
		}
		else
		{
			if (find(x)!=find(y))
				printf("NU\n");
			else
				printf("DA\n");
		}
	}
	
	
	fclose(stdin);
	fclose(stdout);
	
	return 0;
}