Cod sursa(job #2946934)

Utilizator David_PatranjelDavid Patranjel David_Patranjel Data 25 noiembrie 2022 13:53:21
Problema Paduri de multimi disjuncte Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.06 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;
vector<int> parents;
int find_parent(int node){
    if(!parents[node]){
        return node;
    }else{
        return parents[node] = find_parent(parents[node]);
    }
}

int main()
{
    ifstream fin("disjoint.in");
    ofstream fout("disjoint.out");

    int nodes, ops, op;
    fin>>nodes>>ops;
    parents.resize(nodes+1, 0);

    while(ops){
        ops--;
        fin>>op;
        int node1, node2;
        fin>>node1>>node2;
        int a = find_parent(node1);
        int b = find_parent(node2);
        switch(op){
            case 1:
                if(a != b){
                    parents[a] = b;
                }
                break;
            case 2:
                if(a == b){
                    fout<<"DA"<<endl;
                }else{
                    fout<<"NU"<<endl;
                }
                break;
            default:
                fout<<"Error";
        }
    }
    fin.close();
    fout.close();
    return 0;
}