Cod sursa(job #2500966)

Utilizator The_one_and_onlyMironica Vasile The_one_and_only Data 28 noiembrie 2019 21:43:16
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.65 kb
#include <fstream>
using namespace std;

ifstream cin("disjoint.in");
ofstream cout("disjoint.out");
int n, m, p[100001];

int parent(int a) {
	int ans = a;
	while(ans != p[ans])
		ans = p[ans];
	
	while(a != p[a]) {
		int temp = p[a];
		p[a] = ans;
		a = temp;
	}
	return ans;
}

void unite(int a, int b) {
	p[parent(a)] = p[parent(b)];
}

bool same(int a, int b) {
	return parent(a) == parent(b);
}

int main() {
	cin >> n >> m;
	for(int i = 1; i <= n; i++)
		p[i] = i;
	while(m--) {
		int cer, a, b;
		cin >> cer >> a >> b;
		
		if(cer == 1)
			unite(a, b);
		else
			cout << (same(a, b) ? "DA\n" : "NU\n");
	}
	return 0;
}