Cod sursa(job #411478)

Utilizator GotenAmza Catalin Goten Data 4 martie 2010 22:06:44
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include<fstream.h>
int main()
{
	int op,m,n,x,y,cx,cy,i,padre[100100];
	ifstream f("disjoint.in");
	ofstream g("disjoint.out");
	f>>n>>m;
	for(i=1;i<=n;i++)
		padre[i]=i;
	while(m--)
	{
		f>>op>>x>>y;
		if(op==1)
		{
			cx=0;
			cy=0;
			while(x!=padre[x])
			{
				x=padre[x];
				cx++;
			}
			while(y!=padre[y])
			{
				y=padre[y];
				cy++;
			}
			if(cx>cy)
				padre[y]=x;
			else
				padre[x]=y;
		}
		else
		{
			while(x!=padre[x])
				x=padre[x];
			while(y!=padre[y])
				y=padre[y];
			if(x==y)
				g<<"DA\n";
			else
				g<<"NU\n";
		}
	}
	return 0;
}