Cod sursa(job #3366710)

Utilizator robert_dumitruDumitru Robert Ionut robert_dumitru Data 3 octombrie 2026 16:16:10
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.71 kb
#include <fstream>

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

int n, m;
int T[100005];

void Union(int x, int y) {
    T[x] = y;
}
int FindRoot(int x){
    int y, root = x;
    while (T[root] != 0) {
        root = T[root];
    }
    while (x != root) {
        y = T[x];
        T[x] = root;
        x = y;
    }

    return root;
    
}

int main() {
    int q, x, y;
    fin >> n >> m;
    for (int i = 1; i <= m; i++) {
        fin >> q >> x >> y;
        x = FindRoot(x); y = FindRoot(y);
        if (q == 1) {
            Union(x, y);
        }
        else {
            fout << (x == y ? "DA" : "NU") << "\n";
        }
    }

    fout.close();
}