Cod sursa(job #494991)

Utilizator mihaipopa12Popa Mihai mihaipopa12 Data 23 octombrie 2010 16:45:40
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include<stdio.h>

FILE*f=fopen("disjoint.in","r");
FILE*g=fopen("disjoint.out","w");

int N,M,a,b,ra,rb,T[100100];
char caz;

int radacina( int ii ) {
	while ( T[ii] > 0 )	ii = T[ii];
	
	return ii;
}

int main () {
	
	fscanf(f,"%d %d",&N,&M);
	
	
	
	while( M -- ){
		
		fscanf(f,"%d %d %d",&caz,&a,&b);
		if ( !(caz - 1) ){
			ra = radacina(a);
			rb = radacina(b);
			
			if ( ra > rb ){
				T[ra] += T[rb];
				T[rb] = ra;
			}
			else{
				T[rb] += T[ra];
				T[ra] = rb;
			}
		}			
		else{
			
			ra = radacina(a);
			rb = radacina(b);
			
			if(ra == rb)
				fprintf(g,"DA\n");
			else
				fprintf(g,"NU\n");
			
		}
	}
	
	
	fclose(f);
	fclose(g);
	
	return 0;
	
}