Cod sursa(job #562998)

Utilizator Robert29FMI Tilica Robert Robert29 Data 24 martie 2011 10:44:43
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include<stdio.h>
FILE*f=fopen("disjoint.in","r");
FILE*g=fopen("disjoint.out","w");

int xx,yy,z,x,y,n,k,i,a,b;
int t[100001];
void update(int x,int y){
	while(t[x]>0)
		x=t[x];
	xx=x;
	while(t[y]>0)
		y=t[y];
	yy=y;
	if(t[xx]<t[yy]){
		t[xx]+=t[yy];
		t[yy]=xx;
	}else{
		t[yy]+=t[xx];
		t[xx]=yy;
	}
}
void query(int x,int y){
	while(t[x]>0)
		x=t[x];
	xx=x;
	while(t[y]>0)
		y=t[y];
	yy=y;
	if(xx==yy)
		fprintf(g,"DA\n");
	else
		fprintf(g,"NU\n");
}
int main() {
	fscanf(f,"%d%d",&n,&k);
	for(i=1;i<=n;++i)
		t[i]=-1;
	for(i=1;i<=k;++i){
		fscanf(f,"%d%d%d",&z,&a,&b);
		if(z==1)
			update(a,b);
		else
			query(a,b);
		
	}
	
	fclose(g);
	fclose(f);
	return 0;
}