Pagini recente » Cod sursa (job #2086711) | Cod sursa (job #2078687) | Cod sursa (job #1149519) | Cod sursa (job #2889680) | Cod sursa (job #973942)
Cod sursa(job #973942)
#include <cstdio>
#define SIZE 100001
using namespace std;
int n, m, i, x[SIZE], y[SIZE], d[SIZE];
long long v[10001];
long long gcd(int x, int y)
{
if(x==y)
return x;
else if(x==0)
return y;
else if(y==0)
return x;
if(~x&1)
if(~y&1)
return gcd(x>>1, y>>1)<<1;
else
return gcd(x>>1, y);
if(~y&1)
return gcd(x, y<<1);
if(x>y)
return gcd(y, (x-y)>>1);
else
return gcd(x, (y-x)>>1);
}
long long lcm(int x, int y)
{
return (long long)(x*y/gcd(x, y));
}
bool verif()
{
for(int i=1;i<=m;++i)
if(gcd(v[x[i]], v[y[i]])!=d[i])
return 0;
return 1;
}
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 %d", &x[i], &y[i], &d[i]);
v[x[i]]=v[x[i]]*d[i]/gcd(d[i], v[x[i]]);
v[y[i]]=v[y[i]]*d[i]/gcd(d[i], v[y[i]]);
}
if(verif())
for(i=1;i<=n;++i)
printf("%lld ", v[i]);
else
printf("-1\n");
return 0;
}