Cod sursa(job #2851613)

Utilizator DooMeDCristian Alexutan DooMeD Data 18 februarie 2022 21:26:17
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.66 kb
#include <bits/stdc++.h>
using namespace std;
const int nmax = 1e5;

int root[nmax+5];

int lookup(int node) {
    if(root[node] == node) return node;
    root[node] = lookup(root[node]);
    return root[node];
}

void propane(int x, int y) {
    root[lookup(x)] = lookup(y);
}

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

    int n,m; f >> n >> m;
    for(int i=1; i<=n; i++) root[i] = i;
    for(int i=1; i<=m; i++) {
        int type,x,y; f >> type >> x >> y;
        if(type==1)
            propane(x,y);
        else
            (lookup(x)==lookup(y) ? g << "DA\n" : g << "NU\n");
    }
    return 0;
}