Cod sursa(job #779391)

Utilizator visanrVisan Radu visanr Data 17 august 2012 16:58:02
Problema Oz Scor 55
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <cstdio>
#include <cstdlib>
#include <cmath>
using namespace std;


int A[100010], B[100010], C[100010], N, M;
long long V[10010];

int cmmdc(int a, int b)
{
    if(!b) return a;
    else return cmmdc(b, a % b);
}

int cmmmc(int a, int b)
{
    return (a * b) / cmmdc(a, b);
}

int main()
{
    freopen("oz.in", "r", stdin);
    freopen("oz.out", "w", stdout);
    int i;
    scanf("%i %i", &N, &M);
    for(i = 1; i <= N; i++) V[i] = 1;
    for(i = 1; i <= M; i++)
    {
          scanf("%i %i %i", &A[i], &B[i], &C[i]);
          V[A[i]] = cmmmc(V[A[i]], C[i]);
          V[B[i]] = cmmmc(V[B[i]], C[i]);
    }
    bool ok = false;
    for(i = 1; i <= M && !ok; i++) 
          if(cmmdc(V[A[i]], V[B[i]]) != C[i])
                            ok = true;
    if(ok) printf("-1\n");
    else for(i = 1; i <= N; i++) printf("%lld ", V[i]);
    return 0;
}