Cod sursa(job #2487494)

Utilizator lepoartcevPaltineanu Rares-Mihai lepoartcev Data 4 noiembrie 2019 21:01:05
Problema Paduri de multimi disjuncte Scor 100
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.8 kb
#include <stdio.h>
#include <stdlib.h>
int vect[100000];

int find(int x) {

    if(vect[x] == 0)
        return x;

    return find(vect[x]);

}

void elementsUnion(int x, int y) {

    int t1 = find(x), t2 = find(y);

    if(t1 != t2) {
        vect[t2] = t1;
    }

}

int main() {

    int n, m, x, y, cod;
    FILE *in = fopen("disjoint.in", "r");
    FILE *out = fopen("disjoint.out", "w");
    fscanf(in, "%d %d", &n, &m);

    for(int i = 0; i < m; i++) {

        fscanf(in, "%d %d %d", &cod, &x, &y);

        if(cod == 2) {

            if(find(x) == find(y)) {
                fprintf(out, "DA\n");
            }
            else
                fprintf(out, "NU\n");

        }
        else {
            elementsUnion(x, y);
        }
    }

    return 0;

}