Cod sursa(job #3361812)

Utilizator gugalcromMuntoiu Vlad-Ioan gugalcrom Data 28 iulie 2026 17:49:09
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

inline string yes_no(bool x) {
    if (x) {
        return "DA";
    } else {
        return "NU";
    }
}

struct DSU {
    vector<int> parent;
    DSU(int N) : parent(N, -1) {}
    void join(int a, int b) {
        parent[get(a)] = get(b);
    }
    int get(int i) {
        if (parent[i] == -1) {
            return i;
        }
        parent[i] = get(parent[i]);
        return parent[i];
    }
};

int main() {
    ifstream fin("disjoint.in");
    ofstream fout("disjoint.out");
    int N, Q;
    fin >> N >> Q;
    DSU dsu(N);
    for (int q = 0; q < Q; ++q) {
        int op, a, b;
        fin >> op >> a >> b;
        if (op == 1) {
            dsu.join(a-1, b-1);
        } else if (op == 2) {
            fout << yes_no(dsu.get(a-1) == dsu.get(b-1)) << '\n';
        }
    }
    return 0;
}