Cod sursa(job #937072)

Utilizator superman_01Avramescu Cristian superman_01 Data 9 aprilie 2013 15:18:26
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include<fstream>
#define NMAX 100005
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int TT[NMAX];
int n,m;

inline int find ( int x )
{
	
	int R;
	for( R=x ; R!=TT[R] ; R=TT[R]);
	
	return R;
}
void unite ( int x,int y)
{
	TT[y]=x;
}


int main ( void )
{
	f>>n>>m;
	for(int i(1); i <= n ; ++i )
		TT[i]=i;
	for(int i(1) ; i <= m ; ++i )
	{
		int type,x,y;
		f>>type>>x>>y;
		if( type == 2 )
		{
			if( find(x) == find(y) )
			  g<<"DA\n";
			else
				g<<"NU\n";
	    }
		else
			unite(find(x),find(y));	
	}
	f.close();
	g.close();
	return 0;
	
}