Cod sursa(job #1989343)

Utilizator WebDesignbyTMGhiorghiu Ioan-Viorel WebDesignbyTM Data 6 iunie 2017 23:04:45
Problema Paduri de multimi disjuncte Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.59 kb
#define DM 100001
#include <fstream>
using namespace std;

ifstream fi ("disjoint.in");
ofstream fo ("disjoint.out");
int p[DM], o, n, m, a, b;

bool sameset (int x, int y) {
	return (p[x] == p[y]);
}

int findset (int x)
{
	if (p[x] == x)
		return x;
	return p[x] = findset(p[x]);
}

int mergeset (int x, int y) {
	p[y] = findset(x);
}

int main ()
{
	fi >> n >> m;
	for (int i = 1; i <= n; ++i)
		p[i] = i;
	for (int i = 1; i <= m; ++i)
	{
		fi >> o >> a >> b;
		if (o == 2)
			if (sameset(a, b))
				fo << "DA\n";
			else
				fo << "NU\n";
		else
		{
			findset(a);
			mergeset(b, a);
		}
	}
	return 0;
}