Cod sursa(job #348316)

Utilizator n3msizN3msiz n3msiz Data 15 septembrie 2009 11:22:42
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include<stdio.h>

int n,m,i,j,x,y,v[100005],k,l,cod;

int main(){
	FILE*f=fopen("disjoint.in","r");
	FILE*g=fopen("disjoint.out","w");
	
	fscanf(f,"%d %d\n",&n,&m);
	for(i=1;i<=n;i++)
		v[i]=-1;
	for(i=1;i<=m;i++){
		fscanf(f,"%d %d %d",&cod,&x,&y);
		if(cod==1){
			k=x;
			while(v[k]>0)
				k=v[k];
			l=y;
			while(v[l]>0)
				l=v[l];
			
			if(v[k]<v[k]){
				v[k]+=v[l];
				v[l]=k;
			}
			else{
				v[l]+=v[k];
				v[k]=l;}
		}
		else{
			k=x;
			while(v[k]>0)
				k=v[k];
			l=y;
			while(v[l]>0)
				l=v[l];
			
			if(k==l){
				fprintf(g,"DA\n");}
			
			else fprintf(g,"NU\n");
			
		}
	}
	
	
	fclose(f),fclose(g);
	return 0;
}