Cod sursa(job #667671)

Utilizator valentina506Moraru Valentina valentina506 Data 23 ianuarie 2012 16:45:04
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.59 kb
#include<fstream>
using namespace std;
int n,m,i,j,d[100001],a1,a2,m1,m2,tip;

int det(int x)
{
	int y,r;
	
	r=x;
	while(r!=d[r])
		r=d[r];
	
	while(x!=d[x])
	{
		y=d[x];
		d[x]=r;
		x=y;
	}
	return r;
}



int main()
{
	freopen("disjoint.in","r",stdin);
	freopen("disjoint.out","w",stdout);
	
	scanf("%d%d",&n,&m);
	for(i=1;i<=n;++i)
		d[i]=i;
	
	for(i=1;i<=m;++i)
	{
		scanf("%d%d%d",&tip,&a1,&a2);
		m1=det(a1);
		m2=det(a2);
		
		if(tip==1)
			d[m2]=m1;
		else
		{
			if(m2==m1)
				printf("DA\n");
			else
				printf("NU\n");
		}
	}
	return 0;
}