Cod sursa(job #2848350)

Utilizator albertaizicAizic Albert albertaizic Data 12 februarie 2022 13:40:22
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.66 kb
#include <stdio.h>
#include <stdlib.h>
#define MAX 100001
int v[MAX];
int c;
int fi(int a){
  if(v[a]==0){
    c=a;
    return a;
  }
  int x=fi(v[a]);
  v[a]=c;
  return x;
}
int main(){
  FILE *fin,*fout;
  int m,n,i,p,a,b;
  fin=fopen("disjoint.in","r");
  fout=fopen("disjoint.out","w");

  fscanf(fin,"%d%d",&n,&m);
  for(i=1;i<=m;i++){
    fscanf(fin,"%d%d%d",&p,&a,&b);
    if(p==1){
      a=fi(a);
      b=fi(b);
      if(b!=a)
        v[b]=a;
    }else{
      a=fi(a);
      b=fi(b);
      if(b==a)
        fprintf(fout,"DA\n");
      else
        fprintf(fout,"NU\n");
    }
  }

  fclose(fin);
  fclose(fout);
  return 0;
}