Cod sursa(job #1815785)

Utilizator raresm44vasile rares raresm44 Data 25 noiembrie 2016 19:32:29
Problema Paduri de multimi disjuncte Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <iostream>
#include <fstream>
using namespace std;
int h[100001],t[100001],n,k,q,x,y;
int radacina(int x)
{
    if(t[x]==0)
        return(x);
        t[x]=radacina(t[x]);
        return(t[x]);
}
bool verif(int x,int y)
{
    return(radacina(x)==radacina(y));

}
void reuniune(int x,int y)
{
    int rx=radacina(x), ry=radacina(y);
    if(h[rx]>h[ry])
        t[ry]=t[rx];
    else if(h[rx]<h[ry])
        t[rx]=t[ry];
    else{
        t[rx]=t[ry];
        h[rx]++;
    }
}
int main()
{
    ifstream f("disjoint.in");
    ofstream g("disjoint.out");
    f>>n>>k;
    for(int i=1;i<=n;i++)
        h[i]=1;
    for(int i=1;i<=k;i++)
    {
        f>>q>>x>>y;
        int y=verif(x,y);
        if(q==1)
            reuniune(x,y);
        else
            if(y==1)
                g<<'DA'<<"/n";
            else
                g<<'NU'<<"/n";
    }
    cout << "Hello world!" << endl;
    return 0;
}