Cod sursa(job #878909)

Utilizator Kira96Denis Mita Kira96 Data 14 februarie 2013 20:32:50
Problema Paduri de multimi disjuncte Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include<fstream>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int i,x,y,t,n,m,v[100100],a,b;
int min(int a,int b)
{
	if(a>b)
		return b;
	return a;
}
int max(int a,int b)
{
	if(a>b)
		return a;
	return b;
}
int find_ancestor(int x)
{
	while(v[x])
		x=v[x];
	return x;
}
int main ()
{
	f>>n>>m;
	for(i=1;i<=m;++i)
	{
		f>>t>>x>>y;
		t--;
		if(t)
		{
			a=find_ancestor(x);
			b=find_ancestor(y);
			if(a==b)
				g<<"DA\n";
			else
				g<<"NU\n";
		}
		else
		{
			a=find_ancestor(x);
			b=find_ancestor(y);
			v[max(a,b)]=min(a,b);
		}
	}
	return 0;
}