Cod sursa(job #420758)

Utilizator Bit_MasterAlexandru-Iancu Caragicu Bit_Master Data 20 martie 2010 14:50:00
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <cstdio>
const int N = 100001;

int tata[N],n;

int radacina(int x)
{
	if (tata[x] == 0)
		return x;
	tata[x] = radacina(tata[x]);
	return tata[x];
}

void reuniune(int rad1, int rad2)
{
	tata[rad2] = rad1;
}

bool aceeasi_multime(int x, int y)
{
	return radacina(x)==radacina(y);
}

void citire()
{
	int m,op,x,y;
	scanf("%d%d",&n,&m);
	for (int i = 1; i <= m; ++i)
	{
		scanf("%d%d%d",&op,&x,&y);
		if (op == 1)
			reuniune(radacina(x),radacina(y));
		if (op == 2)
			printf(aceeasi_multime(x,y)?"DA\n":"NU\n");
	}
}

int main()
{
	freopen("disjoint.in","r",stdin);
	freopen("disjoint.out","w",stdout);
	citire();
	return 0;
}