Cod sursa(job #3140665)

Utilizator AndPitAndreeaPiticar AndPit Data 8 iulie 2023 13:50:26
Problema Paduri de multimi disjuncte Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.69 kb
#include <fstream>
#include <vector>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
const int Max = 100001;
vector<int>t(Max, 0);
void leaga(int a,int b) {
	t[a] = t[b];
}
int radacina(int a) {
	if (t[a] == a)
		return a;
	else
		return t[a] = radacina(t[a]);

}
int main() {
	int n, m;
	f >> n >> m;
	for (int i = 1; i <= n; ++i)
		t[i] = i;
	while (m--) {
		int cer, x, y;
		f >> cer >> x >> y;
		if (cer == 1) {
			int r1 = radacina(x);
			int r2 = radacina(y);
			if (r1 != r2)
				leaga(x, y);
		}
		else {
			int r1 = radacina(x);
			int r2 = radacina(y);
			if (r1 == r2)
				g << "DA\n";
			else
				g << "NU\n";
		}
	}
	return 0;
}