Cod sursa(job #572958)

Utilizator unknownliviuMaria Liviu Valentin unknownliviu Data 5 aprilie 2011 19:23:55
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.56 kb
#include<fstream>
using namespace std;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
const int N=100010;
int n,m,v[N];
void compresie(int x);
void read()
{
	int x,y,z;
	in>>n>>m;
	for(int i=1;i<=n;i++)
		v[i]=i;
	for(int i=1;i<=m;i++)
	{
		in>>z>>x>>y;
		if(z==1)
		{
			compresie(x);
			compresie(y);
			v[v[x]]=v[y];
		}
		if(z==2)
		{
			compresie(x);
			compresie(y);
			if(v[x]==v[y])
				out<<"DA\n";
			else
				out<<"NU\n";
		}
	}
}

void compresie(int x)
{
	if(v[x]==x)
		return;
	compresie(v[x]);
	v[x] = v[v[x]];
}
int main()
{
	read();
	return 0;
}