Cod sursa(job #1246099)

Utilizator nimicLeoveanu Mihaita Alexandru nimic Data 20 octombrie 2014 16:32:07
Problema Paduri de multimi disjuncte Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 1.07 kb
#include<fstream>
using namespace std;
ifstream in("disjoint.in");
ofstream out("disjoint.out");

const int nmax = 100006;
int radacina[nmax], n, m, cod, x, y, radx, rady, aux;

int main(){
	int player_unu=0;

	in>>n>>m;
	for(int shp = 0; shp<m; shp++)
	{
		in>>cod>>x>>y;
		
		if(cod==1)
		{
			//radacina[x] = y;
			//obtinem radacinile
			radx = x;
			while(radacina[radx]!=0)
			{
				radx = radacina[radx];
			}

			aux = x;
			while(radacina[aux]!=0)
			{
				radacina[aux] = radx;
				aux = radacina[aux];
			}

			rady = y;
			while(radacina[rady]!=0)
			{
				rady = radacina[rady];
			}

			aux = y;
			while(radacina[aux]!=0)
			{
				radacina[aux] = rady;
				aux = radacina[aux];
			}

			radacina[radx] = rady;
		}

		if(cod==2)
		{
			rady = y;
			while(radacina[rady]!=0)
			{
				rady = radacina[rady];
			}

			radx = x;
			while(radacina[radx]!=0)
			{
				radx = radacina[radx];
			}

			if(radx==rady)
			{
				out<<"DA"<<'\n';
			}
			else
			{
				out<<"NU"<<'\n';
			}
		}
	}

	return player_unu;
}