Cod sursa(job #2806008)

Utilizator alessiamtr12Mitrica Alessia alessiamtr12 Data 22 noiembrie 2021 11:34:44
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.03 kb
#include <fstream>

using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int n,m,x,y,tip,tata[100001],nrnod[100001];
int radacina(int x)
{
    if(tata[x]==x)
        return x;
    return tata[x]=radacina(tata[x]);
}

int main()
{
    fin>>n>>m;
    for(int i=1;i<=n;i++)
        {
            tata[i]=i;
            nrnod[i]=1;
        }
    for(int i=1;i<=m;i++)
    {
        fin>>tip>>x>>y;

        int radx=radacina(x);
        int rady=radacina(y);
        if(tip==1)
        {
            if(nrnod[radx]>nrnod[rady])
                {
                    nrnod[radx]+=nrnod[rady];
                    tata[rady]=radx;
                }
                else
                {
                    nrnod[rady]+=nrnod[radx];
                    tata[radx]=rady;
                }
        }
        else
        {
            if(radx!=rady)
                fout<<"NU";
            else
                fout<<"DA";
            fout<<"\n";
        }
    }
    return 0;
}