Cod sursa(job #1046177)

Utilizator CatalinaRaduCatalina Elena Radu CatalinaRadu Data 2 decembrie 2013 18:46:30
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include <cstdio>
#include <iostream>
#define Nmax 100020

using namespace std;

int Arb[Nmax];

int cautare (int a)
{
    while(a!=Arb[a])
        a=Arb[a];
    return a ;
}

void unire (int x, int y)
{
    int a,b;
    a=cautare(x);
    b=cautare(y);
    Arb[b]=a;
}
int main()
{
    FILE *f,*g;
    f=fopen("disjoint.in","r");
    g=fopen("disjoint.out","w");
    int n,m;
    fscanf(f,"%d %d",&n,&m);
    int i,x,y,cod;
    for (i=1;i<=n;i++)
    {
        Arb[i]=i;
    }
    for (i=1;i<=m;i++)
    {
        fscanf(f,"%d %d %d",&cod,&x,&y);
        if(cod==2)
        {
            if (cautare(x)==cautare(y))
                fprintf(g,"DA\n");
            else fprintf(g,"NU\n");
        }
        else

            unire(cautare(x),cautare(y));
    }
    fclose(f);
    fclose(g);
    return 0;
}