Cod sursa(job #2882958)

Utilizator Vali_nnnValentin Nimigean Vali_nnn Data 31 martie 2022 23:04:50
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.72 kb

#include<fstream>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");


int a[100020], b[100020];


int gasit(int x)
{
	int r, y;


	for (r = x; a[r] != r;r = a[r]);


	return r;
}

void uni(int x, int y)
{

	if (b[x] > b[y])
		a[y] = x;
			else a[x] = y;

	if (b[x] == b[y]) b[y]++;
}
int n,m;
int main()
{


	f>>n>>m;

	int i, x, y, cd;


	for (i = 1; i <= n; i++)
	{
		a[i] = i;
		b[i] = 1;
	}

	for (i = 1; i <= m; i++)
	{
	f>>cd>>x>>y;

		if (cd == 2){
			if (gasit(x) == gasit(y))
                g<<"DA"<<'\n';
				else
				g<<"NU"<<'\n';
		}
			else
				{
					if (gasit(x) != gasit(y))
					uni(gasit(x), gasit(y));
				}
	}

	return 0;
}