Cod sursa(job #2843977)

Utilizator mediocrekarmaChirvasa George Matei mediocrekarma Data 3 februarie 2022 15:00:14
Problema Paduri de multimi disjuncte Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");

const int N_MAX = 100000;
int root[N_MAX + 1];

void unite(int& a, int& b) {
    root[a] = root[b];
}

int findRoot(const int& x) {
    if (x == root[x]) {
        return x;
    }
    return root[x] = findRoot(root[x]);
}

int main() {
    fin.tie(0);
    int n, queries;
    fin >> n >> queries;
    for (int i = 1; i <= n; ++i) {
        root[i] = i;
    }
    while (queries--) {
        char type;
        int x, y;
        fin >> type >> x >> y;
        if (type == '1') {
            unite(findRoot(x), findRoot(y));
        } else if (findRoot(x) == findRoot(y)) {
            fout << "DA\n";
        } else {
            fout << "NU\n";
        }
    }
}