Cod sursa(job #3181168)

Utilizator radu._.21Radu Pelea radu._.21 Data 6 decembrie 2023 16:37:55
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <fstream>
#include <vector>

using namespace std;
int n,m,tablou[100001];
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
vector<int>G[100001];
int main(){
    fin>>n>>m;
    for(int i=1;i<=n;i++){
        tablou[i]=i;
        G[i].push_back(i);
    }
    while(m--){
        int t,x,y; fin>>t>>x>>y;
        if(t==2){
            if(tablou[x]==tablou[y])
                fout<<"DA"<<'\n';
            else
                fout<<"NU"<<'\n';
        }
        else{
            /// pun ce e in y in x
            x=tablou[x];
            y=tablou[y];
            if(G[y].size()>G[x].size())
                swap(x,y);
            while(G[y].size()>0){
                int top = G[y][G[y].size()-1];
                G[y].pop_back();
                tablou[top]=x;
                G[x].push_back(top);
            }
        }
    }


    return 0;
}