Cod sursa(job #2544796)

Utilizator MarcGrecMarc Grec MarcGrec Data 12 februarie 2020 15:29:24
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.64 kb
#define MAX_N 100000

#include <fstream>
using namespace std;

ifstream fin("disjoint.in");
ofstream fout("disjoint.out");

int n, m, T[MAX_N + 1];

int Gaseste(int x);
void Uneste(int x, int y);

int main()
{
	fin >> n >> m;
	
	for (int i = 0, x, y, cod; i < m; ++i)
	{
		fin >> cod >> x >> y;
		
		if (cod == 1)
		{
			Uneste(x, y);
		}
		else
		{
			fout << ((Gaseste(x) == Gaseste(y)) ? "DA\n" : "NU\n");
		}
	}
	
	fin.close();
	fout.close();
	return 0;
}

int Gaseste(int x)
{
	if (T[x] == 0) { return x; }
	
	return T[x] = Gaseste(T[x]);
}

void Uneste(int x, int y)
{	
	T[Gaseste(x)] = Gaseste(y);
}