Cod sursa(job #1758179)

Utilizator FredyLup Lucia Fredy Data 16 septembrie 2016 18:48:30
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream fin("disjoint.in");
ofstream fout("disjoint.out");

#define lim 100001
int n,m;
int d[lim];

int get_dad(int x)
{
    if(x!=d[x])
        d[x]=get_dad(d[x]);
    return d[x];
}


void reuniune(int x, int y)
{
    int px,py;
    px=get_dad(x);
    py=get_dad(y);
    d[py]=px;
}




int main()
{
    int i,tip,a,b,pa,pb;
    fin>>n>>m;

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

    for(i=1; i<=m; i++)
    {
        fin>>tip>>a>>b;
        if(tip==1)
            reuniune(a,b);
        else
        {
            pa=get_dad(a);
            pb=get_dad(b);
            if(pa==pb)
                fout<<"DA"<<'\n';
            else
                fout<<"NU"<<'\n';
        }
    }


    fin.close();
    fout.close();
    return 0;
}