Cod sursa(job #2789013)

Utilizator GligarEsterabadeyan Hadi Gligar Data 26 octombrie 2021 19:48:01
Problema Paduri de multimi disjuncte Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.99 kb
#include <fstream>
#include <vector>

using namespace std;

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

const int nmax=100000;

vector <int> r[nmax+1];

int v[nmax+1];

int main(){
    int n,m;
    fin>>n>>m;
    for(int i=1;i<=n;i++){
        r[i].push_back(i);
        v[i]=i;
    }
    for(int im=1;im<=m;im++){
        int x,a,b;
        fin>>x>>a>>b;
        if(x==1){
            int s1=r[v[a]].size(),s2=r[v[b]].size();
            if(s1<=s2){
                for(int i=0;i<s1;i++){
                    r[v[b]].push_back(r[v[a]][i]);
                    v[r[v[a]][i]]=v[b];
                }
            }else{
                for(int i=0;i<s2;i++){
                    r[v[a]].push_back(r[v[b]][i]);
                    v[r[v[b]][i]]=v[a];
                }
            }
        }else{
            if(v[a]==v[b]){
                fout<<"DA\n";
            }else{
                fout<<"NU\n";
            }
        }
    }
    return 0;
}