Cod sursa(job #803970)

Utilizator ephgstefana gal ephg Data 28 octombrie 2012 17:34:40
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.5 kb
#include<cstdio>

#define BM 100005

int mp[BM];
int a[BM],n,m;

int rad(int x){
	if(mp[x]==x)return x;
	mp[x]=rad(mp[x]);
	return mp[x];
}
int main () {
	int i,op,x,y,j,k;
	freopen("disjoint.in","r",stdin);
	freopen("disjoint.out","w",stdout);
	scanf("%d %d",&n,&m);
	for(i=1;i<=n;++i)mp[i]=i;
	for(i=1;i<=m;++i){
		scanf("%d %d %d",&op,&x,&y);
		j=rad(x);
		k=rad(y);
		if(op==1){
			if(j>k)mp[j]=k;
			else mp[k]=j;
		}
		else{
			if(j==k)printf("DA\n");
			else printf("NU\n");
		}
	}
	return 0;
}