Cod sursa(job #2164775)

Utilizator Raul09062000Ianos Raul-Daniel Raul09062000 Data 13 martie 2018 09:45:45
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <iostream>
#include <fstream>

#define nmax 1000005

using namespace std;

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

int p[nmax],n,m;

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

}

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

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