Cod sursa(job #2806009)

Utilizator mihaitza15Cealicu Mihai mihaitza15 Data 22 noiembrie 2021 11:35:14
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.11 kb
#include <fstream>

using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int n,m,v[104],t[100005],nrnod[100005];
int radacina(int x)
{
    if(x!=t[x])
    {
        return t[x]=radacina(t[x]);
    }
    else
    {
        return t[x];
    }
}
int main()
{
    fin>>n>>m;
    for(int i=1;i<=n;i++)
    {
        t[i]=i;
        nrnod[i]=1;
    }
    for(int i=1;i<=m;i++)
    {
        int cod,x,y;
        fin>>cod>>x>>y;
        int r1=radacina(x);
        int r2=radacina(y);
        if(cod==1)
        {

            if(nrnod[r1]>nrnod[r2])
            {
                nrnod[r1]+=nrnod[r2];
                t[r2]=r1;
            }
            else
            {
                    nrnod[r2]+=nrnod[r1];
                    t[r1]=r2;
            }

        }
        else
        {
            if(r1==r2)
            {
                fout<<"DA"<<"\n";
            }
            else
            {
                fout<<"NU"<<"\n";
            }
            ///radacina lui x este egala cu radacina lui y.
        }
    }
    return 0;
}