Cod sursa(job #1263337)

Utilizator yololy97Olaru Bogdan-Ioan yololy97 Data 14 noiembrie 2014 17:20:55
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include <cstdio>
#define N 100001
using namespace std;
int n, m, t[N];
int findRoot(int i){
	if(i != t[i])
		t[i] = findRoot(t[i]);
	return t[i];
}
void solve1(int x, int y){
	int X = findRoot(x), Y = findRoot(y);
	t[X] = Y;
}
void solve2(int x, int y){
	int X = findRoot(x), Y = findRoot(y);
	if(X == Y)
		printf("DA\n");
	else
		printf("NU\n");
}
int main(){
	freopen("disjoint.in", "r", stdin);
	freopen("disjoint.out", "w", stdout);
	scanf("%d %d ", &n, &m);
	for(int i = 1; i <= n; ++i)
		t[i] = i;
	for(int i = 1; i <= m; ++i){
		int x, y, cod;
		scanf("%d %d %d ", &cod, &x, &y);
		if(cod == 1)
			solve1(x, y);
		else solve2(x, y);
	}
	return 0;
}