Cod sursa(job #166379)

Utilizator eugen.nodeaEugen Nodea eugen.nodea Data 27 martie 2008 22:12:06
Problema Oz Scor 55
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
# include <stdio.h>
# include <stdlib.h>
FILE *f=fopen("oz.in","r"), *g=fopen("oz.out","w");

long N,i,j;
long M,d,k,B[100001][3],A[10001];
long long x,y;
int ok;
long cmmdc(long x, long y)
{
 long r;
 do{
   r=x%y;
   x=y; y=r;
 }while (r);
 return x;
}
int main()
{
  fscanf(f,"%ld %ld",&N,&M);
  for (i=1;i<=N;i++) A[i]=1;
  ok=1;
  for (k=1;k<=M && ok;k++)
  {
   fscanf(f,"%ld %ld %ld",&i,&j,&d);
   B[k][0]=i; B[k][1]=j; B[k][2]=d;
   x=long (A[i])*d/cmmdc(A[i],d);
   y=long (A[j])*d/cmmdc(A[j],d);
   if (x>2000000000 || y>2000000000) {
       fprintf(g,"-1");
       fclose(g);
       ok=0; break;
      }
    else {
     A[i]=x; A[j]=y;
    }
  }
  fclose(f);
  if (ok) {
  for (k=1;k<=M && ok ;k++)
       if (cmmdc(A[B[k][0]],A[B[k][1]])!=B[k][2]) { ok=0;
       }
  if (!ok) {
       fprintf(g,"-1");
       fclose(g);
	}
     else {
     for (i=1;i<=N;i++)
       fprintf(g,"%ld ",A[i]);
       fclose(g);
     }
  }
  return 0;
}