Cod sursa(job #803906)

Utilizator ephgstefana gal ephg Data 28 octombrie 2012 15:43:27
Problema Paduri de multimi disjuncte Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include<cstdio>
#include<map>
using namespace std;

#define BM 100005

map<int,int>mp;
int a[BM],n,m;

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);
	//	fprintf(stderr,"%d %d\n",mp[x],mp[y]);
		if(op==1){
			if(mp[mp[x]]>mp[mp[y]])mp[mp[x]]=mp[y];
			else mp[mp[y]]=mp[x];
		}
		else{
			for(j=mp[x];j!=mp[j];j=mp[j]);
			for(k=mp[y];k!=mp[k];k=mp[k]);
			if(j==k)printf("DA\n");
			else printf("NU\n");
		}
	}
	return 0;
}