Cod sursa(job #716990)

Utilizator fhandreiAndrei Hareza fhandrei Data 19 martie 2012 14:40:42
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
//Include
#include <fstream>
using namespace std;

//Constante
const int MAX_SIZE = (int)1e5+1;

//Functii
int getRadacina(int x);

//Variabile
ifstream in("disjoint.in");
ofstream out("disjoint.out");

int nrElemente, nrOperatii;
int operatie, element1, element2;
int tata[MAX_SIZE];

//Main
int main()
{
	in >> nrElemente >> nrOperatii;
	
	for(int i=1 ; i<=nrOperatii ; ++i)
	{
		in >> operatie >> element1 >> element2;
		
		if(operatie == 1)
			tata[getRadacina(element2)] = getRadacina(element1);
		else
			out << (getRadacina(element1) == getRadacina(element2)? "DA\n" : "NU\n");
	}
	
	in.close();
	out.close();
	return 0;
}

int getRadacina(int x)
{	return tata[x]? getRadacina(tata[x]) : x;	}