Cod sursa(job #2083351)

Utilizator eu3neuomManghiuc Teodor-Florin eu3neuom Data 7 decembrie 2017 16:36:59
Problema Paduri de multimi disjuncte Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <bits/stdc++.h>

using namespace std;

inline void Boost() {
	ios::sync_with_stdio(false);
	cin.tie(NULL); cout.tie(NULL);
}

const int NMax = 1e5 + 50;

ifstream cin("disjoint.in");
ofstream cout("disjoint.out");

int Father[NMax];

int Group(int val) {
	if(Father[val] == val) return val;
	Father[val] = Group(Father[val]);
	return Father[val];
}

void Reunion(int b, int c) {
	Father[Group(b)] = Group(c);
}

void Solve(int b, int c) {
	Group(b);
	Group(c);

	if(Father[b] == Father[c]) {
		cout << "DA\n";
	} else {
		cout << "NU\n";
	}
}

int main() {
	Boost();

	int n, q;
	cin >> n >> q;

	for(int i = 1; i <= n; ++i) Father[i] = i;
	
	while(q--) {
		int a, b, c;
		cin >> a >> b >> c;

		if(a == 1) {
			Reunion(b, c);
		} else {
			Solve(b, c);
		}
	}

	return 0;
}