Cod sursa(job #656147)

Utilizator valentina506Moraru Valentina valentina506 Data 3 ianuarie 2012 23:45:01
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.51 kb
#include<fstream>
using namespace std;

int i,j,n,m,c[1000001],t,x,y,m1,m2;
int find(int x)
{
	int r,y;
	r=x;
	while(c[r]!=r)
		r=c[r];
	while(c[x]!=x)
	{
		y=c[x];
		c[x]=r;
		x=y;
	}
	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>>t>>x>>y;
		if(t==1)
		{
			m1=find(x);
			m2=find(y);
			c[m2]=m1;
		}
		else
		{
			m1=find(x);
			m2=find(y);
			if(m1==m2)
				g<<"DA"<<"\n";
			else
				g<<"NU"<<"\n";
		}
	}
	return 0;
}