Cod sursa(job #3192373)

Utilizator mihaistamatescuMihai Stamatescu mihaistamatescu Data 12 ianuarie 2024 14:05:43
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 kb
#include <fstream>

#define DIM 100010

using namespace std;

ifstream fin("disjoint.in");
ofstream fout("disjoint.out");

int n, op, t, x, y;
int v[DIM];

int get_root(int x) {
    if (v[x] < 0) {
        return x;
    }
    return v[x] = get_root(v[x]);
}

void join(int x, int y) {
    x = get_root(x);
    y = get_root(y);
    if (-v[x] < -v[y]) {
        swap(x, y);
    }
    v[x] += v[y];
    v[y] = x;
}

void query(int x, int y) {
    if (get_root(x) == get_root(y)) {
        fout << "DA" << "\n";
    } else {
        fout << "NU" << "\n";
    }
}

int main() {
    fin >> n >> op;
    for (int i = 1; i <= n; i++) {
        v[i] = -1;
    }
    for (int i = 1; i <= op; i++) {
        fin >> t >> x >> y;
        if (t == 1) {
            join(x, y);
        } else {
            query(x, y);
        }
    }
    return 0;
}