Pagini recente » Cod sursa (job #547681) | Cod sursa (job #1273672) | Cod sursa (job #2667467) | Cod sursa (job #2187857) | Cod sursa (job #522429)
Cod sursa(job #522429)
#include <stdio.h>
#define MAXM 100001
#define MAXN 10001
using namespace std;
FILE *f=fopen("oz.in","r");
FILE *g=fopen("oz.out","w");
typedef unsigned long long ulong;
int n,m;
ulong v[MAXN];
ulong a[4][MAXM];
ulong cmmdc(ulong a,ulong b){
ulong r;
while(b!=0){
r = a%b;
a=b;
b=r;
}
return a;
}
ulong cmmmc(ulong a,ulong b){
return (a*b)/cmmdc(a,b);
}
bool ver(){
int register i,x,y;
ulong d;
for(i=1;i<=m;i++){
x=a[1][i];
y=a[2][i];
d=a[3][i];
if(cmmdc(v[x],v[y])!=d){
return false;
}
}
for(i=1;i<=m;i++){
if(v[i]>2000000000)
return false;
}
return true;
}
int main(void){
int register i,j;
fscanf(f,"%d %d",&n,&m);
int register x,y;
ulong d;
for(i=1;i<=n;i++)
v[i]=1;
for(i=1;i<=m;i++){
fscanf(f,"%d %d %lld",&x,&y,&d);
v[x]=cmmmc(d,v[x]);
v[y]=cmmmc(d,v[y]);
a[1][i]=x;
a[2][i]=y;
a[3][i]=d;
}
fclose(f);
if(ver()){
for(i=1;i<=n;i++){
fprintf(g,"%lld ",v[i]);
}
fclose(g);
return 0;
}
fprintf(g,"-1");
fclose(g);
return 0;
}