Cod sursa(job #2542433)

Utilizator GeorgianBaditaBadita Marin-Georgian GeorgianBadita Data 9 februarie 2020 23:21:31
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 kb
#include<fstream>
#include<vector>
#define NMAX 100005

//in-out
std::ifstream f("disjoint.in");
std::ofstream g("disjoint.out");

//data
std::vector<int> father(NMAX);
int n, m;

//readData
void readData(){
    f >> n >> m;
}

int find_(int x){
    if(x == father[x]){
        return x;
    }
    father[x] = find_(father[x]);
    return father[x];
}

void unite_(int x, int y){
    father[find_(x)] = find_(y);
}


void solve(){
    int x, y, op;
    for(int i = 1; i<=n; i++){
        father[i] = i;
    }
    for(int i = 0; i<m; i++){
        f >> op >> x >> y;
        if(op == 1){
            unite_(x, y);
        }else{
            if(find_(x) == find_(y)){
                g << "DA\n";
            }else{
                g << "NU\n";
            }
        }
    }
}

//
int main(){
    readData();
    solve();
    return 0;
}