Cod sursa(job #387591)

Utilizator runnaway90Oprescu Radu Constantin runnaway90 Data 27 ianuarie 2010 22:43:18
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include<stdio.h>

#define N 100002

int x, y, z, yy, zz, tata[N], i, n, m, nr1, nr2;

int main(){
	freopen("disjoint.in","r",stdin);
	freopen("disjoint.out","w", stdout);
	
	scanf("%d %d", &n, &m);
	for (i = 1; i <= m; i++){
		scanf("%d %d %d", &x, &y, &z);
		if (x == 1){
			for (yy = y, nr1 = 0; tata[yy] != 0; yy = tata[yy], nr1++);
			for (zz = z, nr2 = 0; tata[zz] != 0; zz = tata[zz], nr2++);
			if (yy != zz){
				if (nr1 < nr2) 	tata[yy] = zz;
				else	tata[zz] = yy;
			}
		}
		else{
			for (yy = y; tata[yy] != 0; yy = tata[yy]);
			for (zz = z; tata[zz] != 0; zz = tata[zz]);
			if (yy == zz)	printf("DA\n");
			else	printf("NU\n");
		}
	}
	
	return 0;
}