Cod sursa(job #1980379)

Utilizator rares96cheseliRares Cheseli rares96cheseli Data 12 mai 2017 23:15:39
Problema Paduri de multimi disjuncte Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
// sursa proasta

#include <bits/stdc++.h>
#define NMAX 100005

using namespace std;

ifstream f("disjoint.in");
ofstream g("disjoint.out");

int N, M, parent[NMAX];

int _find(int node) {
    if (parent[node] != node) {
        parent[node] = _find(parent[node]);
    }

    return parent[node];
}

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

int main() {
    f >> N >> M;
    for (int i = 1; i <= N; ++i) {
        parent[i] = i;
    }

    while (M--) {
        int type, x, y;
        f >> type >> x >> y;
        if (type == 1) {
            unite(x, y);
            continue;
        }

        if (_find(x) != _find(y)) {
            g << "DA\n";
        } else {
            g << "NU\n";
        }
    }
    return 0;
}