Cod sursa(job #699528)

Utilizator arch_enemyAngela Gossow arch_enemy Data 29 februarie 2012 19:54:00
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include <cstdio>

#define NMAX 100001

int Pd[NMAX];
int N, Q, Tip, x, y, Px, Py, i;

inline int Grup( int Nod )
{
	if( Pd[Nod] != Nod ) Pd[Nod] = Grup( Pd[Nod] );
	return Pd[Nod];
}

int main()
{
	freopen("disjoint.in", "r", stdin);
	freopen("disjoint.out", "w", stdout);
	
	scanf("%d%d", &N, &Q );
	for( i = 1; i <= N; ++i )
		Pd[i] = i;
	for( ; Q--; )
	{
		scanf("%d%d%d", &Tip, &x, &y );
		if( Tip == 1 )
		{
			Px = Grup( x ), Py = Grup( y );
			Pd[Px] = Pd[Py];
		}
		else
		{
			Px = Grup( x ), Py = Grup( y );
			if( Px == Py )
				printf("DA\n");
			else
				printf("NU\n");
		}
	}
	
	return 0;
}