Pagini recente » Cod sursa (job #1915090) | Cod sursa (job #2016799) | Cod sursa (job #155763) | Autentificare | Cod sursa (job #973952)
Cod sursa(job #973952)
#include <cstdio>
#define SIZE 100002
using namespace std;
int n, m, i, x[SIZE], y[SIZE], d[SIZE];
long long v[10002];
long long gcd(long long x, long long 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]]=lcm(v[x[i]], d[i]);
v[y[i]]=lcm(v[y[i]], d[i]);
}
if(verif())
for(i=1;i<=n;++i)
printf("%lld ", v[i]);
else
printf("-1\n");
return 0;
}