Cod sursa(job #2998747)

Utilizator alex_cosmin005Ciotirnae Alexandru alex_cosmin005 Data 9 martie 2023 22:29:22
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb
#include<fstream>

using namespace std;

ifstream cin("disjoint.in");
ofstream cout("disjoint.out");

int n,m;
int i,j,caz,x,y;
int t[100001],rg[100001];

void unire(int x,int y){
    if(rg[x]<rg[y])
        t[x]=y;
    if(rg[x]>rg[y])
        t[y]=x;
    if(rg[x]==rg[y]){
        t[x]=y;
        rg[y]++;
    }
}
int find(int x){
    while(x!=t[x])
        x=t[x];
    return x;
}
int main(){
    cin>>n>>m;
    for(i=1;i<=n;i++){
        rg[i]=1;
        t[i]=i;
    }
    for(i=1;i<=m;i++){
        cin>>caz>>x>>y;
        int tx=find(x);
        int ty=find(y);
        if(caz==1)
            unire(tx,ty);
        else{
            if(tx==ty)
                cout<<"DA"<<endl;
            else
                cout<<"NU"<<endl;
        }
    }
    return 0;
}