Cod sursa(job #899918)

Utilizator andreas_mihAndreas Mihaloianis andreas_mih Data 28 februarie 2013 16:50:05
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include<stdio.h>
#include<vector>
#include<algorithm>
#include<queue>
using namespace std;
FILE*in=fopen("disjoint.in","r");
FILE*out=fopen("disjoint.out","w");
int noduri,muchii,tata[100001];
int getRadacina(int nod);
int main()
{
    fscanf(in,"%d%d",&noduri,&muchii);
    int type,nod1,nod2;
    for(int oo=1;oo<=muchii;++oo)
    {
        fscanf(in,"%d%d%d",&type,&nod1,&nod2);
        if(type==1)
        {
            int w=getRadacina(nod1);
            int q=getRadacina(nod2);
            if(w!=q)
                tata[w]=q;
        }
        else
        {
            if(getRadacina(nod1)==getRadacina(nod2))
                fprintf(out,"DA\n");
            else
                fprintf(out,"NU\n");
        }
    }

fclose(in);
fclose(out);
return 0;
}
int getRadacina(int nod)
{
    if(tata[nod])
    {
        tata[nod]=getRadacina(tata[nod]);
        return tata[nod];
    }
    else
        return nod;
}