Cod sursa(job #2497379)

Utilizator bimax145Bogdan Draghici bimax145 Data 22 noiembrie 2019 15:50:14
Problema Paduri de multimi disjuncte Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.63 kb
#include<fstream>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int n, m;
int initial(int x, int* p)
{
	if (p[x] == x)
		return x;
	else
		initial(p[x], p);
}
int main()
{
	fin >> n >> m;
	int* dis = new int[n + 1];
	for (int i = 1; i <= n; i++)
		dis[i] = i;
	int op, x, y;
	while (m--)
	{
		fin >> op >> x >> y;
		int aux1 = initial(x, dis), aux2 = initial(y, dis);
		if (op == 1)
		{
			if (aux1 < aux2)
				dis[aux2] = aux1;
			else
				dis[aux1] = aux2;
		}
		else
			if (aux1 != aux2)
				fout << "NU\n";
			else
				fout << "DA\n";
	}
	delete[] dis;
	return 0;
}