Cod sursa(job #971393)

Utilizator cnt_tstcont teste cnt_tst Data 9 iulie 2013 09:43:43
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include<fstream>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int rax,ray,a,x,y,n,m,i,T[100010];
int rad(int x)
{
	while(T[x]>0)
		x=T[x];
	return x;
	
}
int main()
{
	f>>n>>m;
	for(i=1;i<=n;i++)
		T[i]=-1;
	for(i=1;i<=m;i++)
	{
		f>>a>>x>>y;
		if(a==1)
		{
			rax=rad(x);
			ray=rad(y);
			if(rax!=ray)
			{
				if(T[rax]<T[ray])
				{
					T[rax]+=T[ray];
					T[ray]=rax;
				}
				else
				{
					T[ray]+=T[rax];
					T[rax]=ray;
				}
			}
		}
		if(a==2)
		{
			rax=rad(x);
			ray=rad(y);
			if(rax==ray)
				g<<"DA"<<"\n";
			else g<<"NU"<<"\n";
		}
	}
	return 0;
}