Pagini recente » Cod sursa (job #294044) | Cod sursa (job #1238487) | Cod sursa (job #204788) | Cod sursa (job #1780768) | Cod sursa (job #161180)
Cod sursa(job #161180)
Utilizator |
Airinei Adrian astronomy |
Data |
17 martie 2008 18:16:16 |
Problema |
Oz |
Scor |
Ascuns |
Compilator |
cpp |
Status |
done |
Runda |
|
Marime |
1.01 kb |
#include <stdio.h>
#include <string.h>
#include <assert.h>
using namespace std;
#define llong long long
int N, M, A[10100], X[100100], Y[100100], D[100100];
int gcd(int a, int b) { return !b ? a : gcd(b, a%b); }
int main(void)
{
freopen("oz.in", "rt", stdin);
freopen("oz.out", "wt", stdout);
int i, j, k, d;
scanf("%d %d\n", &N, &M);
assert(N >= 1 && N <= 10000); assert(M >= 1 && M <= 100000);
for(i = 1; i <= N; i++) A[i] = 1;
for(k = 1; k <= M; k++)
{
scanf("%d %d %d\n", &i, &j, &d);
assert(i >= 1 && i <= N && j >= 1 && j <= N && i != j);
assert(d >= 1 && d <= 2000000000);
A[i] = (int)( (llong)A[i]*d/gcd(A[i],d) );
A[j] = (int)( (llong)A[j]*d/gcd(A[j],d) );
X[k] = i, Y[k] = j, D[k] = d;
}
for(i = 1; i <= M; i++) if( gcd(A[ X[i] ], A[ Y[i] ]) != D[i] )
{
printf("-1\n"); return 0;
}
for(i = 1; i <= N; i++) printf("%d ", A[i]);
return 0;
}