Cod sursa(job #2676530)

Utilizator robeert.77Chirica Robert robeert.77 Data 24 noiembrie 2020 15:47:02
Problema Paduri de multimi disjuncte Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.07 kb

#include <bits/stdc++.h>
#define ll long long
using namespace std;
ifstream fin ("disjoint.in");
ofstream fout ("disjoint.out");
vector<int> component[100001];
int n, m, whichComponent[100001];

int main() {
    fin.tie(0);
    fout.tie(0);
    ios::sync_with_stdio(0);
    fin >> n >> m;
    int operation, a, b;
    for (int i = 1; i <= n; i++) {
        whichComponent[i] = i;
        component[i].push_back(i);
    }
    for (int i = 0; i < m; i++) {
        fin >> operation >> a >> b;
        if (operation == 1) {
            int maxNode = a, minNode = b;
            if (whichComponent[a] < whichComponent[b])
                swap(minNode, maxNode);
            for (int it : component[whichComponent[maxNode]]) {
                whichComponent[it] = whichComponent[minNode];
                component[whichComponent[minNode]].push_back(it);
            }
        }
        else {
            if (whichComponent[a] == whichComponent[b])
                fout << "DA\n";
            else
                fout << "NU\n";
        }
    }
    return 0;
}