Cod sursa(job #1201644)

Utilizator xtreme77Patrick Sava xtreme77 Data 25 iunie 2014 16:55:18
Problema Oz Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <cstdio>

#define rint register int

const char  IN[] ="oz.in";
const char OUT[] ="oz.out";
const int MAX = 100100;

using namespace std;
int cmmdc(int a,int b){
    int r;
    while(r=a%b){
        a=b;
        b=r;
    }
    return b;
}
struct bag{
    int x,y,d;
};
bag q[MAX];
int v[MAX/10];
int main()
{
    int n,m;
    freopen( IN ,"r" , stdin);
    freopen( OUT ,"w" ,stdout);
    scanf("%d%d",&n,&m);
    for( rint i=1; i <= n ;++i )v[i]=1;
    for( rint i=1; i <= m; ++ i){
        scanf("%d%d%d",&q[i].x,&q[i].y,&q[i].d);
        v[q[i].x]=1LL * v[q[i].x] * q[i].d/(cmmdc(v[q[i].x],q[i].d));
        v[q[i].y]=1LL * v[q[i].y] * q[i].d/(cmmdc(v[q[i].y],q[i].d));
    }
    for( rint i=1 ; i<=m ; ++i ){
        if(cmmdc(v[q[i].x],v[q[i].y])!=q[i].d){
            printf("-1\n");
            return 0;
        }
    }
    for( rint i=1 ; i<=n ; ++i)printf("%d ",v[i]);
    return 0;
}