Cod sursa(job #2675218)

Utilizator TheRealGamerFat Vlad TheRealGamer Data 21 noiembrie 2020 11:23:34
Problema Paduri de multimi disjuncte Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
#define nmax 100005

ifstream in("disjoint.in");
ofstream out("disjoint.out");

int father[nmax], n, m;

int cautare(int x){
    int radacina = x, y;
    while(father[radacina]){
        radacina = father[radacina];
    }
    while(x != radacina){
        y = father[x];
        father[x] = radacina;
        x = y;
    }
    return radacina;
}


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

void read(){
    in>>n>>m;
    int x, y, operatie;
    for(int i = 1; i <= m; i++){
        in>>operatie>>x>>y;
        x = cautare(x);
        y = cautare(y);
        if(operatie == 1){
            combinare(x, y);
        }
        else{
            if(x==y)
                out<<"DA"<<'\n';
            else
                out<<"DA"<<'\n';
        }
    }
}

int main(){
    read();
    return 0;
}