Cod sursa(job #1014167)

Utilizator PavelPavel Ana-Oriana Pavel Data 22 octombrie 2013 12:12:27
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include <cstdio>

using namespace std;

FILE *in , *out;
int t[100001];

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

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