Cod sursa(job #949193)

Utilizator tudorv96Tudor Varan tudorv96 Data 12 mai 2013 19:33:24
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.59 kb
#include <fstream>
#include <vector>
using namespace std;

#define in "disjoint.in"
#define out "disjoint.out"
#define N 100005

vector <int> tata (N, 0);
int n, m, x, y, type;

int find (int x) {
	if (tata[x] != x)
		tata[x] = find (tata[x]);
	return tata[x];
}

void unite (int x, int y) {
	tata[x] = y;
}

int main () {
	ifstream fin (in);
	ofstream fout (out);
	fin >> n >> m;
	for (int i = 1; i <= n; ++i)
		tata[i] = i;
	for (int i = 0; i < m; ++i) {
		fin >> type >> x >> y;
		if (type == 1)
			unite (find(x), find(y));
		else
			fout << (find(x) == find(y) ? "DA" : "NU") << "\n";
	}
	fcloseall();
}