Cod sursa(job #3040558)

Utilizator cameleonGeorgescu Dan cameleon Data 30 martie 2023 00:47:59
Problema Paduri de multimi disjuncte Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include <fstream>

using namespace std;
ifstream cin ("disjoint.in");
ofstream cout("disjoint.out");
int tata[100005],n,i,x,y,op,m,rx,ry,rang[100005];
int radacina(int x)
{
    while(tata[x]!=x)
    {
        x=tata[x];
    }
    return x;
}
int main()
{
    cin>>n>>m;
    for(i=1; i<=n; i++)
        tata[i]=i,rang[i]=1;
    for(i=1; i<=m; i++)
    {
        cin>>op>>x>>y;
        rx=radacina(x);
        ry=radacina(y);
        if(op==1)
        {
            if(rx!=ry)
            {
                if(rang[x]<=rang[y])
                {
                    tata[rx]=ry;
                    if(rang[x]==rang[y])
                        rang[y]++;
                }
                else
                    tata[ry]=rx;
            }
        }
        else
        {
            if(rx==ry)
                cout<<"DA"<<'\n';
            else
                cout<<"NU"<<'\n';
        }
    }

    return 0;
}