Cod sursa(job #285066)

Utilizator adelinavVidovici Adelina adelinav Data 22 martie 2009 12:40:03
Problema Paduri de multimi disjuncte Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.56 kb
#include<stdio.h>


struct set{
	int p;
};
set v[100001];

int find(int x){
	if(x==v[x].p) return x;
	else return find(v[x].p);
}

void join(int x, int y){
	v[y].p=v[x].p;
}

int main(){
	freopen("disjoint.in","r",stdin);
	freopen("disjoint.out","w",stdout);
	int i,x,y,cod,n,m,px,py;
	scanf("%d%d",&n,&m);
	for(i=1;i<=n;i++)
		v[i].p=i;
	for(int i=1;i<=m;i++){
		scanf("%d%d%d",&cod,&x,&y);
		if(cod==1) join(x,y);
		if(cod==2){
			px=find(x);
			py=find(y);
			if(px==py) printf("DA\n");
			else printf("NU\n");
		}
	}
	return 0;
}