Cod sursa(job #3332960)

Utilizator cristi95Plesnicute Cristian-Jovani cristi95 Data 10 ianuarie 2026 10:04:17
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <bits/stdc++.h>

using namespace std;

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

int n, m, cod, x, y, t[100001], rankkk[100001];

int faind(int x) {
    if (t[x] == x)
        return x;
    return t[x] = faind(t[x]);
}

void margi (int x, int y) {
    x = faind(x);
    y = faind(y);

    if (x == y) return;

    if (rankkk[x] < rankkk[y]) swap(x,y);

    t[y] = x;

    if (rankkk[x] == rankkk[y]) rankkk[x]++;
}

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

    for (int i = 1; i <= n; ++i) t[i] = i, rankkk[i] = 0;

    for (int i = 1; i <= m; ++i) {
        fin >> cod >> x >> y;
        if (cod == 1) {
            margi(x, y);
        }
        else {
            if (faind(x) == faind(y)) fout << "DA" << endl;
            else fout << "NU" << endl;
        }
    }
    return 0;
}