Cod sursa(job #1392622)

Utilizator Dragne.Andrei11Dragne Andrei Dragne.Andrei11 Data 18 martie 2015 19:36:34
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <cstdio>
#define nmax 100005

using namespace std;

int sef[nmax];
int main()
{
    FILE *in, *out;
    in=fopen("disjoint.in", "r");
    out=fopen("disjoint.out", "w");
    int n, m, n1, n2, x, x1;
    short v;

    fscanf(in, "%d%d", &n, &m);
    while(m)
    {
        fscanf(in, "%hd%d%d", &v, &n1, &n2);
        if(v==1)
        {
            x=n1;
            while(sef[x]!=0)
                x=sef[x];
            x1=n2;
            while(sef[x1]!=0)
                x1=sef[x1];
            sef[x1]=x;
        }
        else
        {
            x=n1;
            while(sef[x]!=0)
                x=sef[x];
            x1=n2;
            while(sef[x1]!=0)
                x1=sef[x1];
            if(x==x1)
                fprintf(out, "DA\n");
            else
                fprintf(out, "NU\n");
        }
        m--;
    }
    fclose(in);
    fclose(out);

    return 0;
}