Cod sursa(job #655958)

Utilizator lily3Moldovan Liliana lily3 Data 3 ianuarie 2012 17:36:45
Problema Paduri de multimi disjuncte Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.58 kb
#include<fstream>
using namespace std;

int i,j,n,m,c[1000001],tip,x,y,m1,m2;
int uneste(int x)
{
	int r,aux;
	r=x;
	while(c[r]!=r)
		r=c[r];
	while(c[x]!=x)
	{
		aux=c[x];
		c[x]=r;
		x=aux;
	}
	return r;
}
int main()
{
	ifstream f("disjoint.in");
	ofstream g("disjoint.out");
	f>>n>>m;
	for(i=1;i<=n;++i)
		c[i]=i;
	for(i=1;i<=m;++i)
	{
		f>>tip>>x>>y;
		if(tip==1)
		{
			m1=uneste(x);
			m2=uneste(y);
			if(m1<m2)
				c[x]=m2;
			else
				c[y]=m1;
		}
		else
		{
			if(c[x]==c[y])
				g<<"DA"<<"\n";
			else
				g<<"NU"<<"\n";
		}
	}
	return 0;
}