Cod sursa(job #274812)

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