Cod sursa(job #301730)

Utilizator pedobearBacauanu Vlad pedobear Data 8 aprilie 2009 13:35:09
Problema Oz Scor 75
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <stdio.h>

long long m,n,i,j,a,b,r,h,per[4][100010],x1,x2,y1,y2,y,x,v[10001];

int main ()
{
    freopen ("oz.in","r",stdin);
    freopen ("oz.out","w",stdout);
    
    scanf ("%lld %lld",&n,&m);
    
    for (i=1;i<=n;i++) v[i]=1;
    
    for (i=1;i<=m;i++){
        scanf ("%lld %lld %lld",&per[1][m],&per[2][m],&per[3][m]);
        x1=x2=per[3][m];
        r=1;
        y1=v[per[1][m]];
        y2=v[per[2][m]];
        while (r!=0){
              r=y1%x1;
              y1=x1;
              x1=r;
              }
        v[per[1][m]]=v[per[1][m]]/y1*per[3][m];
        if (v[per[1][m]]>2000000000.0) h=1;
        r=1;
        while (r!=0){
              r=y2%x2;
              y2=x2;
              x2=r;
              }
        v[per[2][m]]=v[per[2][m]]/y2*per[3][m];
        if (v[per[2][m]]>2000000000.0) h=1;
        }
        
    for (i=1;i<=m;i++){
        r=1; y=v[per[1][m]]; x=v[per[2][m]];
        while (r!=0){
              r=y%x;
              y=x;
              x=r;
              }
        if (y!=per[3][m]) h=1;
        }
   
    if (h) printf ("-1");     
    else for (i=1;i<=n;i++) printf ("%lld ",v[i]);
    
    return 0;
}