Pagini recente » Cod sursa (job #3166900) | Cod sursa (job #122611) | Cod sursa (job #813124) | Cod sursa (job #2514641) | Cod sursa (job #164391)
Cod sursa(job #164391)
#include <iostream>
#define FIN "oz.in"
#define FOUT "oz.out"
#define MAX_N 10000
#define MAX_OP 100000
using namespace std;
int n,v[MAX_N+1],m,nrop=0;
struct operatie{
int x,y,d;
} op[MAX_OP+1];
void iofile(void){
freopen(FIN,"rt",stdin);
freopen(FOUT,"wt",stdout);
scanf("%d%d",&n,&m);
for (int i=1;i<=n;i++){
v[i]=1;
}
return ;
}
int gcd(int x,int y){
int r;
while (y) {
r=x%y;
x=y;
y=r;}
return x;
}
void solve(void){
int x,y,d,diviz;
for (int i=1;i<=m;i++){
scanf("%d%d%d",&x,&y,&d);
nrop++;
op[nrop].x=x;op[nrop].y=y;op[nrop].d=d;
diviz=gcd(v[x],d);
v[x]=(v[x]*d)/diviz;
diviz=gcd(v[y],d);
v[y]=(v[y]*d)/diviz;
}
fclose(stdin);
return ;
}
void end_of_program(void){
int i,ok=1;
for (int i=1;i<=m;i++){
if (gcd(v[nrop[i].x],v[nrop[i].y])!=nrop[i].d){
ok=0;
break;
}
}
if (ok){
for (int i=1;i<n;i++){printf("%d ",v[i]);}
printf("%d\n",v[n]);
} else {printf("%d\n",-1);}
fclose(stdout);
return ;
}
int main(void){
iofile();
solve();
end_of_program();
return 0;
}