Cod sursa(job #3227553)

Utilizator vali1234Danciu Valentin-Nicolae vali1234 Data 1 mai 2024 20:32:56
Problema Paduri de multimi disjuncte Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.73 kb
#include <iostream>	

using namespace std;
int a[501][501], n, m;
int height[501], t[501];

int radacina(int k)
{
	if (t[k] == 0)
		return k;
	else
	{
		int x = radacina(t[k]);
		t[k] = x;
		return x;
	}
}

void unire(int k, int p)
{
	int rk = radacina(k), rp = radacina(p);
	if (rk != rp)
	{
		if (height[rk] > height[rp])
		{
			t[rp] = rk;
		}
		else
		{
			t[rp] = rk;
			if(height[rk]==height[rp])	
			   height[rp]++;
		}
	}




}
int main()
{
	int n, m;
	cin >> n >> m;
	int op, x, y;
	for (int i = 1;i <= m;i++)
	{
		cin >> op >> x >> y;
		if (op == 1)
			unire(x, y);
		else
		{
			if (radacina(x) == radacina(y))
				cout << "DA";
			else
				cout << "NU";
		}
	}
	return 0;
}