Cod sursa(job #638651)

Utilizator zloteanu.adrianzloteanu adrian nichita zloteanu.adrian Data 21 noiembrie 2011 11:50:04
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include<fstream>
using namespace std;
int tata[100001];
int radacina(int x)
{
    if(tata[x]==0)
        return x;
    int rez = radacina(tata[x]);
    tata[x]=rez;
    return rez;
}
int main()
{
    ifstream q("disjoint.in");
    ofstream w("disjoint.out");
    int gunoi,m;
    int op,x,y;
    q>>gunoi>>m;
    for(int k=1; k<=m; k++)
    {
        q>>op>>x>>y;
        int radx=radacina(x);
        int rady=radacina(y);
        if(op==2)
        {
           if(radx==rady)
                w<<"DA\n";
           else
                w<<"NU\n";
        }
        else
        {
            if(radx!=rady)
            {
                tata[radx]=rady;
            }
        }
    }
}