Cod sursa(job #3343595)

Utilizator cosmin_90Drignei Cosmin-Cristian cosmin_90 Data 27 februarie 2026 20:03:21
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include<fstream>
#include<vector>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
const int NMAX=1e5+2;
int t[NMAX];
int s[NMAX];
int findRoot(int x){
    while(t[x]!=x){
        x=t[x];
    }
    return x;
}
int main(){
    int n,m;
    fin>>n>>m;
    for(int i=0;i<NMAX;i++){
        t[i]=i;
        s[i]=1;
    }
    for(int i=0;i<m;i++){
        int c,x,y;
        fin>>c>>x>>y;
        if(c==1){
            x=findRoot(x);
            y=findRoot(y);
            if(s[x]>s[y]){
                t[y]=x;
                s[x]+=s[y];
            }else{
                t[x]=y;
                s[y]+=s[x];
            }
        }else if(c==2){
            if(findRoot(x)==findRoot(y)){
                fout<<"DA"<<'\n';
            }else{
                fout<<"NU"<<'\n';
            }
        }
    }
    return 0;
}