Cod sursa(job #3208004)

Utilizator BoggiGurau Bogdan Boggi Data 27 februarie 2024 12:42:09
Problema Paduri de multimi disjuncte Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.01 kb
#include <fstream>
#include <vector>
using namespace std;

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

#define VI vector<int>

VI tata;
int n, m;

int findRoot(int node) {
    if (tata[node] == 0) {
        return node;
    }
    return findRoot(tata[node]);
}

void integrate(int nodeX, int nodeY) {
    tata[nodeY] = findRoot(nodeX);
}

void printTati() {
    for (int i = 1; i < tata.size(); ++i) {
        fout << tata[i] << ' ';
    }
    fout << '\n';
    for (int i = 1; i <= n; ++i) {
        fout << i << ' ';
    }
    fout << '\n';
}

int main() {
    fin >> n >> m;
    tata = VI(n + 1, 0);
    for (int i = 0; i < m; ++i) {
        //printTati(), fout << '\n';
        int opType, x, y;
        fin >> opType >> x >> y;
        if (opType == 2) {
            if (findRoot(x) == findRoot(y)) {
                fout << "DA\n";
            } else {
                fout << "NU\n";
            }
        } else {
            integrate(x, y);
        }
    }
}