Cod sursa(job #2083353)

Utilizator eu3neuomManghiuc Teodor-Florin eu3neuom Data 7 decembrie 2017 16:38:12
Problema Paduri de multimi disjuncte Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 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 fin("disjoint.in");
ofstream fout("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]) {
		fout << "DA\n";
	} else {
		fout << "NU\n";
	}
}

int main() {
	Boost();

	int n, q;
	fin >> n >> q;

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

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

	return 0;
}