Cod sursa(job #273407)

Utilizator Addy.Adrian Draghici Addy. Data 8 martie 2009 15:32:25
Problema Oz Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <stdio.h>
#define DIM 10001

long v[DIM];
long n,m,i,ok,a,b,r,x,y,z;

int main(){

  FILE *f = fopen("oz.in", "r");
  FILE *g = fopen("oz.out", "w");

  fscanf(f,"%ld %ld",&n,&m);

  for (i=1; i<=n; i++)
    v[i] = 1;

  for (i=1; i<=m; i++) {

    fscanf(f,"%ld %ld %ld",&x,&y,&z);

    a = v[x];
    b = z;
    while (b!=0) {
      r = a%b;
      a = b;
      b = r;
    }
    v[x] = v[x]/a*z;

    a = v[y];
    b = z;
    while (b!=0) {
      r = a%b;
      a = b;
      b = r;
    }
    v[y] = v[y]/a*z;

  }
  fclose(f);

  ok = 1;

  FILE *q = fopen("oz.in", "r");

  fscanf(q,"%ld %ld",&n,&m);

  for (i=1; i<=m; i++) {

    fscanf(q,"%ld %ld %ld",&x,&y,&z);

    a = v[x];
    b = v[y];
    while (b!=0) {
      r = a%b;
      a = b;
      b = r;
    }

    if (a!=z) {
      ok = 0;
      break;
    }
  }

  fclose(q);

  if (!ok)
    fprintf(g,"-1");
  else
    for (i=1; i<=n; i++)
      fprintf(g,"%ld ",v[i]);

  fclose(g);

  return 0;
}