Cod sursa(job #1705925)

Utilizator m.scarlat95Scarlat Marius-George m.scarlat95 Data 21 mai 2016 08:36:27
Problema Paduri de multimi disjuncte Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <iostream>
#include <fstream>
#define MAX	100001

unsigned int n, m;
int multime[MAX];

int findSet( int elem )
{
	if( elem == multime[elem] )
	{
		return elem;
	}
	else
	{
		return multime[elem] = findSet( multime[elem] );
	}
}

int main( void )
{
	freopen( "disjoint.in", "r", stdin );
	freopen( "disjoint.out", "w", stdout );

	std::cin >> n >> m;

	for( int i = 1; i <= n; ++i )
	{
		multime[i] = i;
	}

	int cod, x, y;
	for( int i = 0; i < m; ++i )
	{
		std::cin >> cod >> x >> y;
		if( cod == 1 )
		{
			if( findSet(x) != findSet(y) )
			{
				multime[findSet(x)] = findSet(y);
			}
		}
		else if( cod == 2 )	
		{
			findSet(x) != findSet(y) ? std::cout << "NU\n" : std::cout << "DA\n";
		}
	}

	fclose( stdin );
	fclose( stdout );

	return 0;
}