Cod sursa(job #655973)

Utilizator lily3Moldovan Liliana lily3 Data 3 ianuarie 2012 17:55:10
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 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);
			c[m2]=m1;
			/*if(x<y)
				c[y]=x;
			else
				c[x]=y;*/
		}
		else
		{
			m1=uneste(x);
			m2=uneste(y);
			if(m1==m2)
				g<<"DA"<<"\n";
			else
				g<<"NU"<<"\n";
		}
	}
	return 0;
}