Cod sursa(job #2285851)

Utilizator marcogoldPop Mihali Marco Silviu marcogold Data 19 noiembrie 2018 13:29:52
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.8 kb
#include <iostream>
#include <fstream>
using namespace std;

ofstream fo("disjoint.out");
ifstream fi("disjoint.in");

int n,m,tip,a,b,parinte[100005];
int father(int nod)
{
    if(nod==parinte[nod])
        return nod;

    parinte[nod]=father(parinte[nod]);
    return parinte[nod];
}

int main()
{
    fi>>n>>m;

    for(int i=1;i<=n;i++)
        parinte[i]=i;

    for(int i=1; i<=m; i++)
    {
        fi>>tip;

        if(tip==1) ///Reuniune
        {
            fi>>a>>b;
            parinte[father(b)]=father(a);

        }
        else
        {
            fi>>a>>b;
            if(father(a)==father(b))
                fo<<"DA"<<"\n";
            else
                fo<<"NU"<<"\n";
        }




    }

for(int i=1;i<=n;i++)
    cout<<parinte[i]<<"\n";

}