Cod sursa(job #2423373)

Utilizator GashparzPredescu Eduard-Alexandru Gashparz Data 21 mai 2019 11:37:33
Problema Paduri de multimi disjuncte Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <iostream>
#include <fstream>

using namespace std;

int tata[500001];
int grad[500001];
int find_tata(int node)
{
	if (tata[node] == node)
		return node;
	tata[node] = find_tata(tata[node]);
	return tata[node];
}
int main()
{
	ifstream fin("disjoint.in");
	ofstream fout("disjoint.out");
	int nrMult, nrOp, x, y, cod;
	int tata_x, tata_y;
	fin >> nrMult >> nrOp;
	for (int i = 1; i <= nrMult; i++)
	{
		tata[i] = i;
		grad[i] = 1;
	}
	for (int i = 0; i < nrOp; i++)
	{
		fin >> cod >> x >> y;
		tata_x = find_tata(x);
		tata_y = find_tata(y);
		if (cod == 1)
		{
			if(tata_x<tata_y)
			{
				tata[tata_x] = tata_y;
				grad[tata_y] += grad[tata_x];
			}
			else
			{
				tata[tata_y] = tata_x;
				grad[tata_x] + -grad[tata_y];
			}
		}
		else
		{
			if (tata_x = tata_y)
				fout << "Da\n";
			else fout << "Nu!\n";
		}
	}
	return 0;
}