Cod sursa(job #2115786)

Utilizator k.bruenDan Cojocaru k.bruen Data 27 ianuarie 2018 10:10:15
Problema Paduri de multimi disjuncte Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include <fstream>
#include <vector>
#define uint unsigned int
std::ifstream in("disjoint.in");
std::ofstream out("disjoint.out");

std::vector<int> tati;

int find_tata(int node) {
	if (tati[node] == node) return node;
	return find_tata(tati[node]);
}

int main() {
	uint n, m;
	in >> n >> m;
	tati.resize(n);
	for (int i = 0; i < n; ++i) {
		tati[i] = i;
	}

	for (int iter = 0; iter < m; ++iter) {
		int op, m1, m2;
		in >> op >> m1 >> m2;
		m1--, m2--;
		if (op == 1) {
			tati[m2] = find_tata(m1);
		}
		else {
			if (find_tata(m1) == find_tata(m2)) out << "DA" << '\n';
			else out << "NU" << '\n';
		}
	}

	return 0;
}