Cod sursa(job #348687)

Utilizator n3msizN3msiz n3msiz Data 16 septembrie 2009 16:32:28
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include<stdio.h>

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

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