Cod sursa(job #2782325)

Utilizator mateitudordmDumitru Matei mateitudordm Data 12 octombrie 2021 10:23:02
Problema Paduri de multimi disjuncte Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.68 kb
#include <fstream>

using namespace std;

int par[100001],h[100001];
void uni(int x,int y)
{
    if(h[x]<h[y])
        par[x]=y;
    else if(h[x]>h[y])
        par[y]=x;
    else
        par[x]=y,h[y]++;
}
int fi(int x)
{
    while(x!=par[x])
        x=par[x];
    return x;
}

int main()
{
    ifstream cin("disjoint.in");
    ofstream cout("disjoint.out");
    int n,m,a,b,c,i;
    cin>>n>>m;
    for(i=1; i<=n; i++)
        par[i]=i,h[i]=1;
    for(i=0; i<m; i++)
    {
        cin>>c>>a>>b;
        if(c==1)
            uni(a,b);
        else if(fi(a)==fi(b))
            cout<<"DA"<<'\n';
        else
            cout<<"NU"<<'\n';
    }
    return 0;
}