Cod sursa(job #1801711)

Utilizator emity03Vrabie Vladislav emity03 Data 9 noiembrie 2016 16:06:38
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.56 kb
#include <fstream>

using namespace std;

ifstream cin("disjoint.in");
ofstream cout("disjoint.out");

int Cap[1000005],N,M,x,a,b;

int find(int nod)
{
	if( Cap[nod]==nod) return nod;
		int cap=find(Cap[nod]);
			Cap[nod]=cap;
	return cap;
}

void unire(int a, int b)
{
	a=find(a);
	b=find(b);
	Cap[a]=b;
}

int main()
{
	cin>>N>>M;
	for(int i=1; i<=N;++i)
		Cap[i]=i;
		
	for(int i=1; i<=M; ++i)
	{
		cin>>x>>a>>b;
		if(x==1) unire(a,b);
			else if(x==2 && find(a)==find(b)) cout<<"DA\n";
				else cout<<"NU\n"; 
	}
return 0;

}