Cod sursa(job #3237293)

Utilizator SilviuC25Silviu Chisalita SilviuC25 Data 8 iulie 2024 09:31:21
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 kb
#include <bits/stdc++.h>
using namespace std;

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

const int MAX_NUM = 1e5;

int n, m, parent[MAX_NUM], treeRank[MAX_NUM];

int find(int x) {
    if (parent[x] != x) {
        parent[x] = find(parent[x]);
    }
    return parent[x];
}

void unify(int x, int y) {
    parent[y] = x;
}

int main() {
    fin >> n >> m;
    for (int i = 1; i <= n; ++i) {
        parent[i] = i;
        treeRank[i] = 1;
    }
    for (int i = 0; i < m; ++i) {
        int x, y, cod;
        fin >> cod >> x >> y;
        if (cod == 2) {
            if (find(x) == find(y)) {
                fout << "DA\n";
            } else {
                fout << "NU\n";
            }
        } else {
            unify(find(x), find(y));
        }
    }
    return 0;
}