Cod sursa(job #2423142)

Utilizator stefanpiturStefan Alexandru Pitur stefanpitur Data 20 mai 2019 20:21:42
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.78 kb
#include <iostream>
#include <cstdio>
using namespace std;
const int NMAX = 100001;
int dad[NMAX];
int boss(int slave){
    if(dad[slave] != slave)
        dad[slave] = boss(dad[slave]);
    return dad[slave];
}
int main()
{
    FILE *fin, *fout;
    int n,m,cod,x,y,i;
    fin = fopen("disjoint.in","r");
    fout = fopen("disjoint.out","w");
    fscanf(fin,"%d %d",&n,&m);
    for(i = 1; i <= n; i ++)
        dad[i] = i;
    for(i = 1; i <= m; i ++){
        fscanf(fin,"%d %d %d",&cod,&x,&y);
        if(cod == 1)
            dad[boss(y)] = boss(x);
        else{
            if(boss(x) == boss(y))
                fprintf(fout,"DA\n");
            else
                fprintf(fout,"NU\n");
        }
    }
    fclose(fin);
    fclose(fout);
    return 0;
}