Cod sursa(job #273006)

Utilizator runnaway90Oprescu Radu Constantin runnaway90 Data 8 martie 2009 01:07:04
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.09 kb
#include<stdio.h>
#define N 100002

int n, m, x, y, c, tata[N], i, j, k;

void citire();

int main(){
    freopen("disjoint.in","r",stdin);
    freopen("disjoint.out","w",stdout);
    citire();

    return 0;
}

void citire(){
    scanf("%d %d", &n, &m);
    for (; m; m--){
        scanf("%d %d %d", &c, &x, &y);
        if (c == 1){
            for (i = x; tata[i] != 0; i = tata[i]);
            for (j = y; tata[j] != 0; j = tata[j]);
            tata[i] = j;
        }
        else{
            for (i = x; tata[i] != 0; i = tata[i]);
            for (j = y; tata[j] != 0; j = tata[j]);

            if (i == j){

                printf("DA\n");

                for (k = x; tata[k] != 0; k = tata[k])
                    if (k != i) tata[k] = i;

                }
            else{

                for (k = x; tata[k] != 0; k = tata[k])
                    if (k != i) tata[k] = i;

                for (k = y; tata[k] != 0; k = tata[k])
                    if (k != j) tata[k] = j;

                    printf("NU\n");
                }
        }
    }
}