Cod sursa(job #2805988)

Utilizator Cosmin_117Gaicu Cosmin-Valentin Cosmin_117 Data 22 noiembrie 2021 11:02:22
Problema Paduri de multimi disjuncte Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <fstream>
using namespace std;

/// midifica numele fisierelor

ifstream cin("disjoint.in");
ofstream cout("disjoint.out");

int n, m, t[100005];

int radacina(int x) {
    while (t[x] != x)
        x = t[x];

    return x;
}

int main() {
    cin >> n >> m;

    for (int i = 1; i <= n; i++) {
        t[i] = i;
    }

    for (int i = 1; i <= m; i++) {
        int cod, x, y, r1, r2;

        cin >> cod >> x >> y;
        r1 = radacina(x);
        r2 = radacina(y);

        if (cod == 1) {
            /// unesc radacina lui x cu radacina lui y
            t[r1] = r2; // sau invers
        }
        else {
            /// daca radacina lui x este egala cu radacina lui y
            /*
            if (r1 == r2)
                cout << "DA\n";
            else
                cout << "NU\n";
                */

            cout << ((r1 == r2) ? "DA\n" : "NU\n");
        }
    }

    return 0;
}