Cod sursa(job #1384416)

Utilizator andytosaAndrei Tosa andytosa Data 11 martie 2015 08:42:37
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include <fstream>

using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int v[100010],n,k,p,a,b,i;

void verif(int a,int b,int p)
{
    int x,y,g1=0,g2=0;
    x = v[a];
    while(v[x] != x)
        x = v[x], ++g1;

    y = v[b];
    while(v[y] != y)
        y = v[y], ++g2;
    if(p == 1){
        if(g1 < g2)
            v[x] = v[y];
        else
            v[y] = v[x];
    }
    else{
        if(x == y)
            fout<<"DA\n";
        else
            fout<<"NU\n";
    }
}
int main()
{
    fin>>n>>k;
    for(i=1;i<=n;++i)
        v[i] = i;
    for(i=1;i<=k;++i){
        fin>>p>>a>>b;
        verif(a,b,p);
    }
    return 0;
}