Cod sursa(job #2940152)

Utilizator maria10Cioclov Maria maria10 Data 14 noiembrie 2022 22:03:13
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.68 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int n, m, c, x, y, r1, r2, parent[100001], h[100001];

int root(int x){
    if(parent[x] == 0) return x;
    return root(parent[x]);
}

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

    for(int i=1; i<=m; i++){
        fin>>c>>x>>y;
        r1 = root(x);
        r2 = root(y);

        if(c==1){
            if(h[r1] < h[r2]) parent[r1] = r2;
            else if(h[r2] == h[r1]) parent[r1] = r2, h[r2] = h[r2] + 1;
            else parent[r2] = r1;
        }
        else{
            if(r1 == r2) fout<<"DA\n";
            else fout<<"NU\n";
        }
    }
    return 0;
}