Pagini recente » Cod sursa (job #1984468) | Cod sursa (job #1258447) | Cod sursa (job #202038) | Cod sursa (job #2486189) | Cod sursa (job #1005792)
#include <cstdio>
#include <cstdlib>
#include <algorithm>
using namespace std;
const int NMAX = 10010, MMAX = 100010, MAX = 2000000000;
int N, M, X[MMAX], Y[MMAX], D[MMAX];
long long V[NMAX];
long long GCD(long long A, long long B)
{
if(!B) return A;
return GCD(B, A % B);
}
long long LCM(long long A, long long B)
{
return (A * B) / GCD(A, B);
}
int main()
{
freopen("oz.in", "r", stdin);
freopen("oz.out", "w", stdout);
scanf("%i %i", &N, &M);
for(int i = 1; i <= N; ++ i) V[i] = 1;
for(int i = 1; i <= M; ++ i)
{
scanf("%i %i %i", &X[i], &Y[i], &D[i]);
V[X[i]] = LCM(V[X[i]], 1LL * D[i]);
V[Y[i]] = LCM(V[Y[i]], 1LL * D[i]);
if(V[X[i]] > 1LL * MAX || V[Y[i]] > 1LL * MAX)
{
printf("-1\n");
return 0;
}
}
for(int i = 1; i <= M; ++ i)
if(GCD(V[X[i]], V[Y[i]]) != D[i])
{
printf("-1\n");
return 0;
}
for(int i = 1; i <= N; ++ i)
printf("%lld ", V[i]);
return 0;
}