Cod sursa(job #2213221)

Utilizator berindeiChesa Matei berindei Data 15 iunie 2018 19:49:16
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <bits/stdc++.h>
using namespace std;
int const NMAX = 1e5+100;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
int tati[NMAX];

int root(int nod){
    if (tati[nod]==nod)
        return nod;
    return tati[nod]=root(tati[nod]);
}

void join(int n1, int n2){
    int r1=root(n1);
    int r2=root(n2);
    tati[r2]=r1;
}

int main(){
    int n, m, c, a, b;
    in >> n >> m;
    for (int i=1; i<=n; i++)
        tati[i]=i;
    for (int i=1; i<=m; i++){
        in >> c >> a >> b;
        if (c==1) join(a, b);
        else{
            if (root(a) == root(b))
                out << "DA";
            else out << "NU";
            out << '\n';
        }
    }
}