Cod sursa(job #2846737)

Utilizator Remus.RughinisRemus Rughinis Remus.Rughinis Data 9 februarie 2022 16:53:45
Problema Paduri de multimi disjuncte Scor 100
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.69 kb
#include <stdio.h>
#include <stdlib.h>
#define MAXN 100000
#define MAXN 100000

int p[MAXN];

int findBoss(int x){
  if(p[x] == x)
    return x;

  p[x] = findBoss(p[x]);

  return p[x];
}

int main(){
  int n,x,y,i,t,q;
  FILE *fin, *fout;

  fin = fopen("disjoint.in","r");
  fscanf(fin,"%d%d",&n,&q);

  for(i=0;i<n;i++){
    p[i] = i;
  }

  fout = fopen("disjoint.out","w");
  for(i = 0; i < q; i++){
    fscanf(fin,"%d%d%d",&t,&x,&y);

    if(t == 1){
      p[findBoss(x)] = y;

    } else{
      if(findBoss(x) == findBoss(y))
        fprintf(fout,"DA\n");
      else
        fprintf(fout,"NU\n");
    }
  }
  fclose(fin);
  fclose(fout);

  return 0;
}