Cod sursa(job #779392)

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

#define ll long long

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

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

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

int main()
{
    freopen("oz.in", "r", stdin);
    freopen("oz.out", "w", stdout);
    int i;
    scanf("%lld %lld", &N, &M);
    for(i = 1; i <= N; i++) V[i] = 1;
    for(i = 1; i <= M; i++)
    {
          scanf("%lld %lld %lld", &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;
}