Pagini recente » Cod sursa (job #646583) | Cod sursa (job #1975481) | Cod sursa (job #158141) | Cod sursa (job #802805) | Cod sursa (job #161428)
Cod sursa(job #161428)
Utilizator |
Airinei Adrian astronomy |
Data |
18 martie 2008 01:04:58 |
Problema |
Oz |
Scor |
Ascuns |
Compilator |
cpp |
Status |
done |
Runda |
|
Marime |
1.04 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;
assert( scanf("%d %d\n", &N, &M) == 2 ) ;
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++)
{
assert(scanf("%d %d %d\n", &i, &j, &d)==3);
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;
}