Cod sursa(job #2661240)

Utilizator al3xionescuIonescu Alexandru al3xionescu Data 21 octombrie 2020 17:13:02
Problema Paduri de multimi disjuncte Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.6 kb
#include <bits/stdc++.h>
#define NMAX 100005
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int p[NMAX];
int Find(int x) {
    return x == p[x] ? x : p[x] = Find(p[x]);
}

void Union(int x, int y) {
    p[Find[x]] = y;
}

int main() { 
    int N, M;
    fin >> N >> M;
    for (int i = 1; i <= N; i++) {
        p[i] = i;
    }
    for (int q, x, y; M; --M) {
        fin >> q >> x >> y;
        if (q == 1) {
            Union(x, y);
        } else {
            fout << (Find(x) == Find(y) ? "DA" : "NU") << '\n';
        }
    }

    return 0;
}