Cod sursa(job #679452)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 13 februarie 2012 11:51:13
Problema Oz Scor 55
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include<cstdio>
#define M 2000000000
#define N 10001
int n,m,i,d[10*N],v[N],t,a[10*N],b[10*N];
int C(int a,int b)
{if(!b)
      return a;
return C(b,a%b);}
int main()
{FILE *f=fopen("oz.in","r"),*g=fopen("oz.out","w");
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[i],&b[i],&d[i]);
     v[a[i]]=(v[a[i]]*d[i])/C(v[a[i]],d[i]);
     v[b[i]]=(v[b[i]]*d[i])/C(v[b[i]],d[i]);
     if(v[a[i]]>M||v[b[i]]>M)
           t=1;}
if(!t)
     {for(i=1;i<=m&&!t;i++)
     if(C(v[a[i]],v[b[i]])!=d[i])
            t=1;
     if(!t)
            for(i=1;i<=n;i++)
                  fprintf(g,"%d ",v[i]);
     else
            fprintf(g,"-1");}
else
     fprintf(g,"-1");
return 0;}