Cod sursa(job #1413769)

Utilizator vladdy47Bucur Vlad Andrei vladdy47 Data 2 aprilie 2015 08:21:20
Problema Oz Scor 35
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
# include <cstdio>
# define MAX 2000000000
# define MAXn 10005
# define MAXm 100005

using namespace std;

int cmmdc (long long a, long long b)
{
    long long r;
    r = a % b;
    while (r)
    {
        a = b;
        b = r;
        r = a % b;
    }

    return b;
}

int n, k, i;
long long a[MAXn],I[MAXm],J[MAXm],d[MAXm];

int main ()

{
    freopen("oz.in","r",stdin);
    freopen("oz.out","w",stdout);


    scanf("%d %d\n",&n, &k);

    for (i = 1; i <= n; i++)
        a[i] = 1;

    for (i = 1; i <= k; i++)
    {
        scanf("%lld %lld %lld\n", &I[i], &J[i], &d[i]);
        a[I[i]] = 1LL * a[I[i]] * (d[i] / cmmdc (d[i], a[I[i]]));
        a[J[i]] = 1LL * a[J[i]] * (d[i] / cmmdc (d[i], a[J[i]]));
    }

    bool ok = true;

    for (i = 1; i <= k; i++)
        if (d[i] != cmmdc (a[I[i]], a[J[i]]) || a[i] > MAX)
        {
            printf("-1");
            ok = false;
            break;
        }

    if (ok == true)
        for (i = 1; i <= n; i++)
            printf("%lld ", a[i]);

    return 0;
}