Cod sursa(job #336402)

Utilizator prdianaProdan Diana prdiana Data 31 iulie 2009 14:17:05
Problema Paduri de multimi disjuncte Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include <stdio.h>

int r[100002];



int find(int x)
{
	if (r[x] == x)
	{
		return x;
	}
	else
	{
		r[x] = find(r[x]);
	}
}

inline void merge(int x,int y)
{
	r[y] = find(r[x]);
}

int main()
{
	freopen("disjoint.in","r",stdin);
	freopen("disjoint.out","w",stdout);
	int n,m,q,i,x,y;

	scanf("%d%d",&n,&m);
	for (i=1;i<=n;i++)
	{
		r[i] = i;
	}
	
	for (i=0;i<m;i++)
	{
		scanf("%d%d%d",&q,&x,&y);
		switch (q)
		{
		case 1:
			merge(x,y);
			break;
		case 2:
			if (find(x) == find(y))
			{
				printf("DA\n");
			}
			else
			{
				printf("NU\n");
			}
			break;
		}
	}

	return 0;
}