Cod sursa(job #1009999)

Utilizator alexpascadiAlexandru Pascadi alexpascadi Data 14 octombrie 2013 09:32:48
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <stdio.h>

using namespace std;

int t[100001];

int radacina(int x)
{
    if(t[x]==0)
        return x;
    int r=radacina(t[x]);
    t[x]=r;
    return r;
}

int main()
{
    FILE *in,*out;
    in=fopen("disjoint.in","r");
    out=fopen("disjoint.out","w");
    int n,m,cod,i,x,y;
    fscanf(in,"%d%d",&n,&m);
    for(i=1;i<=n;i++) t[i]=0;
    for(i=1;i<=m;i++)
    {
        fscanf(in,"%d",&cod);
        fscanf(in,"%d%d",&x,&y);
        if(cod==1)
        {
            t[radacina(x)]=y;
        }
        if(cod==2)
        {
            if(radacina(x)==radacina(y)) fprintf(out,"DA");
            else fprintf(out,"NU");
            if(i<m) fprintf(out,"\n");
        }
    }
    return 0;
}