Cod sursa(job #3354275)

Utilizator pofianFilipp pofian Data 17 mai 2026 11:46:38
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.72 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("disjoint.in");
ofstream fout("disjoint.out");

int n;
vector<int> root;

int getRoot(int node) {
    int parent = root[node];
    if (parent == node)
        return node;

    int r = getRoot(parent);
    root[node] = r;
    return r;
}

int main() {
    int n, m;
    fin >> n >> m;

    root.resize(n + 1);
    for (int i = 0; i <= n; i++)
        root[i] = i;
    
    while (m--) {
        int code, x, y;
        fin >> code >> x >> y;
        int rx = getRoot(x);
        int ry = getRoot(y);
        if (code == 1) { // join
            root[rx] = ry;
        } else if (code == 2) { // intersection
            fout << (rx == ry ? "DA\n" : "NU\n");
        }
    }
}