Cod sursa(job #2279972)

Utilizator Raul09062000Ianos Raul-Daniel Raul09062000 Data 10 noiembrie 2018 10:44:18
Problema Paduri de multimi disjuncte Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.74 kb
#include <fstream>

#define NMAX 1000005

using namespace std;

int p[NMAX],n,m;

ifstream f("disjoint.in");
ofstream g("disjoint.out");

int parinte(int nod)
{
    if(p[nod]==nod)
        return nod;
    return parinte(p[nod]);
}

void unire(int vf1, int vf2)
{
    p[parinte(vf1)]=parinte(vf2);
}

int main()
{
    int op,vf2,vf1;
    f>>n>>m;
    for(int i=1; i<=m; i++)
    {
        f>>op>>vf1>>vf2;
        if(!p[vf1])
            p[vf1]=vf1;
        if(!p[vf2])
            p[vf2]=vf2;
        if(op==1)
            unire(vf1,vf2);
        else
        {
            if(parinte(vf1)==parinte(vf2))
                g<<"DA\n";
            else
                g<<"NU\n";
        }
    }
    return 0;
}