Cod sursa(job #1438768)

Utilizator VladutZ94FMI Chichirau Vlad Vasile VladutZ94 Data 20 mai 2015 19:42:17
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <iostream>
#include <fstream>
#include <vector>


std::vector <int> Array;
int n, m;

int search(int nod)
{
	if (nod != Array[nod])
	{
		return Array[nod] = search(Array[nod]);
	}
	else
	{
		return nod;
	}
}

void Join(int x, int y)
{
	x = search(x);
	y = search(y);
	Array[x] = y;
}

void rez()
{
	std::ifstream f("disjoint.in");
	std::ofstream g("disjoint.out");
	f >> n >> m;
	int intr, x, y;
	Array.resize(n + 1);
	for (unsigned int i = 0; i < Array.size(); i++)
	{
		Array[i] = i;
	}
	for (int i = 0; i < m; i++)
	{
		f >> intr >> x >> y;
		if (intr == 1)
		{
			Join(x, y);
		}
		else
		{
			if (search(x) == search(y))
			{
				g << "DA\n";
			}
			else
			{
				g << "NU\n";
			}
		}
	}
}

int main()
{	
	rez();
	return 0;
}