Cod sursa(job #2943340)

Utilizator Petrica81Simion Petrica Petrica81 Data 20 noiembrie 2022 21:21:55
Problema Paduri de multimi disjuncte Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

ifstream fin ("disjoint.in");
ofstream fout ("disjoint.out");
int n, m;
vector<int> multimi;

int main() {
    fin>>n>>m;
    multimi.resize(n+1,0);
    for(int i = 1; i <= m; i++){
        int op,x,y;
        fin>>op>>x>>y;
        if(op == 1){
            if(multimi[x] == 0 && multimi[y] == 0){
                multimi[x] = x;
                multimi[y] = x;
            }
            else if(multimi[x] != 0)multimi[y] = multimi[x];
            else multimi[x] = multimi[y];
        }
        if(op == 2){
            while(multimi[x] != multimi[y] && (multimi[x] != x || multimi[y]!=y)){
                if(multimi[x] != 0) x = multimi[x];
                if(multimi[y] != 0) y = multimi[y];
            }
            if(multimi[x] == multimi[y] && multimi[y] != 0) fout<<"DA\n";
            else fout<<"NU\n";
        }
    }
    return 0;
}