Pagini recente » Cod sursa (job #2598026) | Cod sursa (job #2719494) | Cod sursa (job #2082199) | Cod sursa (job #2948875) | Cod sursa (job #1412983)
#include <fstream>
#include <cstdio>
using namespace std;
int i,m,n,fa,e,ap[987990],ma,j,rc,v[10010];
long long a,b,c,cb,ca,cc,cca,ccb;
bool ok=true;
int main(){
freopen("oz.in","r",stdin);
ofstream g ("oz.out");
scanf("%d%d",&n,&m);
for(i=1;i<=m;++i){
scanf("%d%d%d",&a,&b,&c);
if(v[a]==0&&v[b]==0)v[a]=c,v[b]=c;
else
if(v[a]%c==0&&v[b]==0)continue;
else {
fa=2;
ca=a;10010
cc=c;
cb=b;
a=v[a];10010
b=v[b];
cca=a;
ccb=b;
while(c!=1&&fa*fa<=cc){
e=0;
while(c%fa==0)c/=fa,e++;
if(e!=0){ap[fa]+=e;
if(fa>ma)ma=fa;}
fa++;}
if(c>1){
if(c<=987990){ap[c]++;
if(c>ma)ma=c;}
rc=c;}
if(cca==1)cca*=cc;
else{
fa=2;
while(fa<=ma){
if(ap[fa]!=0){
e=0;
if(a!=1)
while(a%fa==0)a/=fa,e++;
e=ap[fa]-e;
for(j=1;j<=e;++j){cca*=fa;
if(rc*fa>2000000000){ok=false;i=m+2;}
else rc*=fa;}
if(cca>2000000000){ok=false;i=m+2;}}
fa++;}}
if(ccb==1)ccb*=cc;
else{
fa=2;
while(fa<=ma){
if(ap[fa]!=0){
e=0;
if(b!=1)
while(b%fa==0)b/=fa,e++;
e=ap[fa]-e;
for(j=1;j<=e;++j){ccb*=fa;
if(rc*fa>2000000000){ok=false;i=m+2;}
else rc*=fa;}
if(ccb>2000000000){ok=false;i=m+2;}
ap[fa]=0;}
fa++;}}
v[ca]=cca;v[cb]=ccb;}}
if(ok)
for(i=1;i<=n;++i)g<<v[i]<<" ";
else g<<-1;
return 0;}