Cod sursa(job #2660971)

Utilizator teochess2017Togan Teodor-Bogdan teochess2017 Data 20 octombrie 2020 22:59:47
Problema Oz Scor 100
Compilator c-64 Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <stdio.h>
#include <stdlib.h>
///la prima trimitere am uitat sa iau cazul ca nu exista solutie
int v[10000], in[3][100000];

int cmmdc(int a, int b){
  int r;
  if(a < b){
    r = a;
    a = b;
    b = r;
  }
  while(0 < b){
    r = a % b;
    a = b;
    b = r;
  }
  return a;
}

int main()
{
    FILE *fin, *fout;
    int n, m, x, y, d, i, solutie;
    fin = fopen("oz.in", "r");
    fscanf(fin, "%d%d", &n, &m);
    for(i = 0; i < n; i++){
      v[i] = 1;
    }
    for(i = 0; i < m; i++){
      fscanf(fin, "%d%d%d", &in[0][i], &in[1][i], &in[2][i]);
      v[in[0][i] - 1] = v[in[0][i] - 1] / cmmdc(v[in[0][i] - 1], in[2][i]) * in[2][i];
      v[in[1][i] - 1] = v[in[1][i] - 1] / cmmdc(v[in[1][i] - 1], in[2][i]) * in[2][i];
    }
    solutie = 0;
    for(i = 0; i < m; i++){
      if(cmmdc(v[in[0][i] - 1], v[in[1][i] - 1]) != in[2][i]){
        solutie = -1;
      }
    }
    fclose(fin);
    fout = fopen("oz.out", "w");
    if(solutie == 0){
      for(i = 0; i < n; i++){
        fprintf(fout, "%d ", v[i]);
      }
    }else{
      fprintf(fout, "-1");
    }
    fclose(fout);
    return 0;
}