Cod sursa(job #202585)

Utilizator drag0shSandulescu Dragos drag0sh Data 9 august 2008 21:12:50
Problema Oz Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <stdio.h>
#define MAX 10001

FILE *f,*g;
int n,ok;
unsigned long m,v[MAX];

long euclid(long a,long b){
  if(!b) return a;
  else return euclid(b,a%b);
}


void rezolvare(){
  int a,b;
  unsigned long d,i,x,y;
  long long t1,t2;
  fscanf(f,"%d %ld",&n,&m);
  for(i=1;i<=n;i++)v[i]=1;
  for(i=1;i<=m;i++){
    fscanf(f,"%d %d %ld",&a,&b,&d);
    x=d/euclid(v[a],d);
    y=d/euclid(v[b],d);
    t1=x*v[a];
    t2=y*v[b];
    if(t2>2000000000||t1>2000000000){
      ok=1;
      break;
    }
    v[a]=x*v[a];
    v[b]=y*v[b];
    if(euclid(v[a],v[b])!=d){
      ok=1;
      break;
    }
  }
}

void afisare(){
  int i;
  if(!ok)  for (i=1;i<=n;i++)  fprintf(g,"%lu ",v[i]);

  else
  fprintf(g,"-1");
  fprintf(g,"\n");
}
int main(){
  f=fopen("oz.in","r");
  g=fopen("oz.out","w");
  rezolvare();
  afisare();
  
  
  fclose(f);
  fclose(g);
  return 0;
}