Cod sursa(job #494811)

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

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

int N,M,i,j,a,b,caz,T[100100];

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