Cod sursa(job #255229)

Utilizator pedobearBacauanu Vlad pedobear Data 8 februarie 2009 21:15:49
Problema Oz Scor 25
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <stdio.h>

int m,n,i,j,a,b,r,h;
long long x1,x2,y1,y2,x;
long long v[10001];
int o[100001],q[100001];

int main ()
{
    freopen ("oz.in","r",stdin);
    freopen ("oz.out","w",stdout);
    
    scanf ("%d %d",&n,&m);
    
    for (i=1;i<=n;i++) v[i]=1;
    
    for (i=1;i<=m;i++){
        scanf ("%d %d %lld",&a,&b,&x);
        o[i]=a;
        q[i]=b;
        x1=x;
        x2=x;
        r=1;
        y1=v[a];
        y2=v[b];
        while (r!=0){
              r=y1%x1;
              y1=x1;
              x1=r;
              }
        v[a]=v[a]/y1*x;
        if (v[a]>2000000000) {h=1;break;}
        r=1;
        while (r!=0){
              r=y2%x2;
              y2=x2;
              x2=r;
              }
        v[b]=v[b]/y2*x;
        if (v[b]>2000000000) {h=1;break;}
        }
        
    for (i=1;i<=m;i++)
        for (j=i+1;j<=m;j++)
            if ( (o[i]==o[j]) && (q[i]==q[j]) ) {h=1;break;}
    
    if (h==1) printf ("-1");
    else for (i=1;i<=n;i++) printf ("%lld ",v[i]);
    
    return 0;
}