Cod sursa(job #274800)

Utilizator BloodRainBurceanu Gabriel BloodRain Data 9 martie 2009 23:31:53
Problema Paduri de multimi disjuncte Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.54 kb
#include<fstream.h>
ifstream in("disjoint.in");
ofstream out("disjoint.out");
int t[100001],n,m,i,o,a,b;
int rad(int nod)
	{
	if(t[nod]==nod) return nod;
	return rad(t[nod]);
	}
int niv(int nod)
	{
	if(t[nod]==nod) return 1;
	return 1+niv(t[nod]);
	}
int main(void)
{
in>>n>>m;
for(i=1;i<=n;i++)
	{
	t[i]=i;
	}
for(i=1;i<=m;i++)
	{
	in>>o>>a>>b;
	if(o==1)
		{
		if(niv(a)<niv(b)) t[a]=b;
		else t[b]=a;
		}
	else
		{
		if(rad(a)==rad(b)) out<<"DA \n";
		else out<<"NU \n";
		}
	}
in.close();
out.close();
return 0;
}