Cod sursa(job #3254888)

Utilizator dorucioroslanCioroslan Doru dorucioroslan Data 9 noiembrie 2024 09:43:02
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.71 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int n,m,cod,x,y;
int t[100005],inalt[100005];
int rad(int nod){
    if(nod==t[nod]) return nod;
    int rnod=rad(t[nod]);
    t[nod]=rnod;
    return rnod;
}
void reuniune(){
    int rx=rad(x);
    int ry=rad(y);
    if(inalt[rx]>inalt[ry]) t[ry]=rx;
    else if(inalt[ry]>inalt[rx]) t[rx]=ry;
    else {
        t[ry]=rx;
        inalt[rx]++;
    }
}
bool interogare(){
return rad(x)==rad(y);
}
int main()
{ fin>>n>>m;
for(int i=1; i<=n; i++) t[i]=i;
for(;m;m--){
    fin>>cod>>x>>y;
    if(cod==1) reuniune();
    if(cod==2) if(interogare()) fout<<"DA\n"; else fout<<"NU\n";
}

}