Cod sursa(job #2358903)

Utilizator stef2003Bud Stefan stef2003 Data 28 februarie 2019 14:10:16
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.68 kb
#include <iostream>
#include <cstdio>

using namespace std;

int boss[100001];

int bossuprem(int x) {
  if(x==boss[x])
    return x;
  else
    return boss[x]=bossuprem(boss[x]);
}

int main() {
  FILE *fin, *fout;
  int n, m, p, 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++)
    boss[i]=i;
  for(i=1;i<=m;i++) {
    fscanf(fin, "%d%d%d",&p,&x,&y);
    if(p==1)
      boss[bossuprem(y)]=bossuprem(x);
    else {
      if(bossuprem(x)==bossuprem(y))
        fprintf(fout, "DA\n");
      else
        fprintf(fout, "NU\n");
    }
  }
  fclose( fin );
  fclose( fout );
  return 0;
}