Cod sursa(job #1872992)

Utilizator flibiaVisanu Cristian flibia Data 8 februarie 2017 18:43:55
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.54 kb
#include <bits/stdc++.h>

using namespace std;

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

int n, m, p[100003], pos, x, y, cod;

int find(int a){
	if(p[a] == a) return a;
	pos = find(p[a]);
	p[a] = pos;
	return pos;
}

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

int main(){
	in >> n >> m;
	for(int i = 1; i <= n; i++) p[i] = i;
	for(int i = 1; i <= m; i++){
		in >> cod;
		in >> x >> y;
		if(cod == 1) unite(find(x), find(y));
		else if(find(x) == find(y)) out << "DA\n"; else out << "NU\n";
	}
	return 0;
}