Cod sursa(job #2952122)

Utilizator Bogdan345Marius Mihalache Bogdan345 Data 8 decembrie 2022 14:20:38
Problema Paduri de multimi disjuncte Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.07 kb
#include <fstream>
#include <vector>

using namespace std;
ifstream cin("disjoint.in");
ofstream cout("disjoint.out");
vector<vector<int>>galeata;
vector<int>nrGaleata;
int main(){
ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
int n,m;
cin>>n>>m;
galeata.resize(n+1);
nrGaleata.resize(n+1);
for(int i=1;i<=n;i++){
galeata[i].push_back(i);
nrGaleata[i]=i;
}
for(int i=1;i<=m;i++){
    int intrebare,a,b;
    cin>>intrebare>>a>>b;
    if(intrebare==1){
    int gA=nrGaleata[a];
    int gB=nrGaleata[b];
        if(galeata[gA].size()>galeata[gB].size()){
            for(auto&element:galeata[gB]){
                galeata[gA].push_back(element);
                nrGaleata[element]=gA;
            }
            galeata[gB].clear();
        }else{
            for(auto&element:galeata[gA]){
            galeata[gB].push_back(element);
            nrGaleata[element]=gB;
        }
     galeata[gA].clear();
    }
}else{
int gA=nrGaleata[a];
int gB=nrGaleata[b];
if(gA==gB){
    cout<<"Da"<<'\n';
}else{
  cout<<"Nu"<<'\n';
}
}
}
return 0;
}