Cod sursa(job #3189979)

Utilizator Dia3141Costea Diana Stefania Dia3141 Data 6 ianuarie 2024 18:40:18
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.77 kb
#include <fstream>
using namespace std;
ifstream cin("disjoint.in");
ofstream cout("disjoint.out");
int n,m,tip,x,y,root[100001],dim[100001];
int getroot(int x){
    while(root[x]!=0)
        x=root[x];
    return x;
}
void join(int x,int y){
    int rx=getroot(x),ry=getroot(y);
    if(dim[rx]<dim[ry])
        swap(rx,ry);
    /// rx devine tatal nodului ry
    root[ry]=rx;
    dim[rx]+=dim[ry];
}
int main()
{
    cin>>n>>m;
    for(int i=1;i<=n;i++)
        dim[i]=1;
    for(int i=1;i<=m;i++){
        cin>>tip>>x>>y;
        if(tip==1)
            join(x,y);
        else{
            if(getroot(x)==getroot(y))
                cout<<"DA";
            else
                cout<<"NU";
            cout<<'\n';
        }
    }
    return 0;
}