Cod sursa(job #542111)

Utilizator c_adelinaCristescu Adelina c_adelina Data 25 februarie 2011 20:01:05
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.57 kb
#include <cstdio>
#include <deque>
using namespace std;
#define N 100002
int t[N];

deque<int>d;

int dad(int x)
{
	
	
	while (t[x]!=0)
	{
		d.push_back(x);
		x=t[x];
	}
	while (!d.empty()) 
		t[d.back()]=x,d.pop_back();
	return x;
}

int main()
{
	int n,i,j,k,x;
	
	freopen("disjoint.in","r",stdin);
	freopen("disjoint.out","w",stdout);
	scanf("%d %d",&n,&k);
	while (k--)
	{
		scanf("%d %d %d",&x,&i,&j);
		if (x==2)
		{
			if (dad(i)==dad(j)) printf("DA\n"); else
				printf("NU\n");
		} else
			t[dad(j)]=dad(i);
	}
	return 0;
}