Cod sursa(job #274820)

Utilizator BloodRainBurceanu Gabriel BloodRain Data 9 martie 2009 23:49:48
Problema Paduri de multimi disjuncte Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.57 kb
#include<fstream.h>
ifstream in("disjoint.in");
ofstream out("disjoint.out");
int *t,*rg,n,m,i,o,a,b;
int rad(int nod)
	{
	while(t[nod]!=nod)
		{
		nod=t[nod];
		}
	return nod;
	}
int main(void)
{
t=new int[n+21];
rg=new int[n+21];
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();
delete t;
delete rg;
return 0;
}