Cod sursa(job #1989345)

Utilizator WebDesignbyTMGhiorghiu Ioan-Viorel WebDesignbyTM Data 6 iunie 2017 23:09:05
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.54 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;

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

void mergeset (int x, int y) {
	p[y] = 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 (findset(a) == findset(b))
				fo << "DA\n";
			else
				fo << "NU\n";
		else
		{
			mergeset(findset(b), findset(a));
		}
	}
	return 0;
}