Cod sursa(job #2946738)

Utilizator David_PatranjelDavid Patranjel David_Patranjel Data 25 noiembrie 2022 01:46:28
Problema Paduri de multimi disjuncte Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.08 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

int find_parent(vector<int>& parents, int node){
    if(!parents[node]){
        return node;
    }else{
        return find_parent(parents, parents[node]);
    }
}

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

    int nodes, ops, op;
    fin>>nodes>>ops;
    vector<int> parents(nodes+1, 0);

    while(ops){
        ops--;
        fin>>op;
        int node1, node2;
        fin>>node1>>node2;
        int a = find_parent(parents, node1);
        int b = find_parent(parents, 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;
}