Cod sursa(job #655895)

Utilizator valentina506Moraru Valentina valentina506 Data 3 ianuarie 2012 16:37:05
Problema Paduri de multimi disjuncte Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.59 kb
#include<fstream>
using namespace std;
int n,m,i,j,c[100001],x,y,t;

int find(int x)
{
	int r,y;
	
	r=c[x];
	while(c[x]!=x)
		x=c[x];
	
	while(c[x]!=x)
	{
		y=c[x];
		c[x]=r;
		x=y;
	}
	
}
		
int main()
{
	freopen("disjoint.in","r",stdin);
	freopen("disjoint.out","w",stdout);
	
	scanf("%d%d",&n,&m);

	for(i=1;i<=n;++i)
		c[i]=i;
	
	while(m)
	{
		--m;
		scanf("%d%d%d",&t,&x,&y);
		
		if(t==2)
		{
			if(find(x)==find(y))
				printf("DA\n");
			else
			printf("NU\n");
		}
		
		if(t==1)
			c[y]=c[x];
		
	//	for(i=1;i<=n;++i)
		//	printf("%d ",c[i]);
		//printf("\n");
		
	}
	
	
	
	return 0;
}