Cod sursa(job #2423428)

Utilizator zambi.zambyZambitchi Alexandra zambi.zamby Data 21 mai 2019 13:08:15
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.29 kb
#include <iostream>

#include <fstream>

//grad[x] reprez nr de noduri din comp

//find father

int tata[100005],grad[100005];

using namespace std;

int find_father(int nod)

{

    if(tata[nod]==nod)

        return nod;

    tata[nod]=find_father(tata[nod]);

    return tata[nod];

}

int main()

{

    ifstream in("disjoint.in");

    ofstream out("disjoint.out");

    int n,m,i,x,y,cod;

    in>>n>>m;

    for(i=1;i<=n;i++)

    {

        tata[i]=i;

        grad[i]=1;

    }

    for(i=1;i<=m;i++)

    {

        in>>cod>>x>>y;

        if(cod==2)

        {

            int fx=find_father(x);

            int fy=find_father(y);

            if(fx==fy)

                out<<"DA\n";

            else

                out<<"NU\n";

        }

        else

        if(cod==1)

        {

            int fx=find_father(x);

            int fy=find_father(y);

            if(fx==fy)

                continue;

            if(grad[fx]<grad[fy])

            {

                tata[fx]=fy;

                grad[fy]+=grad[fx];

            }

            else

            {

                tata[fy]=fx;

                grad[fx]+=grad[fy];

            }

        }

    }

    return 0;

}