Cod sursa(job #164767)

Utilizator marinMari n marin Data 24 martie 2008 19:53:00
Problema Oz Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <stdio.h>
#define DIM 10001

int cmmdc(int a, int b){
  long int r;
  while (b) {
    r = a%b;
    a = b;
    b = r;
  }
  return a;
}

int v[DIM];
int n,m,a,b,d,a1,b1,ok,i;


int main(){
  FILE *f = fopen("oz.in","r");
  fscanf(f,"%d %d",&n,&m);
  for (i=1;i<=n;i++)
    v[i]=1;
  for (i=1;i<=m;i++) {
    fscanf(f,"%d %d %d",&a,&b,&d);
    a1 = cmmdc(v[a],d);
    v[a]=v[a]*(d/a1);
    b1 = cmmdc(v[b],d);
    v[b]=v[b]*(d/b1);
  }
  fclose(f);
  ok=1;
  f = fopen("oz.in","r");
  fscanf(f,"%d %d",&n,&m);
  for (i=1;i<=m;i++) {
    fscanf(f,"%d %d %d",&a, &b, &d);
    if (cmmdc(v[a],v[b])!=d)
      ok=0;
  }
  fclose(f);
  FILE *g = fopen("oz.out","w");
  if (ok) {
    for (i=1;i<=n;i++)
      fprintf(g,"%d ",v[i]);
  } else
    fprintf(g,"-1");

  fclose(g);
  return 0;
}