Cod sursa(job #2859310)

Utilizator andreipirjol5Andrei Pirjol andreipirjol5 Data 1 martie 2022 10:08:56
Problema Oz Scor 75
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <cstdio>

#define int64 long long
#define CONST 2000000000

using namespace std;
FILE *fin, *fout;

#define NMAX 10000
int64 v[NMAX + 5];
int n;

void set_vector()
{
    for(int i = 1; i <= n; i++)
        v[i] = 1;
}

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

    return a;
}

void query(int i, int j, int64 d)
{
    if(v[i] == 1)
        v[i] *= d;
    else
        v[i] *= (d / cmmdc(v[i], d));
    if(v[j] == 1)
        v[j] *= d;
    else
        v[j] *= d / (cmmdc(v[j], d));
}

int main()
{
    fin = fopen("oz.in", "r");
    fout = fopen("oz.out", "w");

    int m;
    fscanf(fin, "%d%d", &n, &m);

    set_vector();

    int i, j, d;
    while(m)
    {
        fscanf(fin, "%d%d%d", &i, &j, &d);

        query(i, j, d);
        m--;
    }

    bool ok = true;
    for(int i = 1; i <= n; i++)
        if(v[i] > CONST)
            ok = false;

    if(ok == false)
    {
        fprintf(fout, "-1");
        return 0;
    }

    for(int i = 1; i <= n; i++)
        fprintf(fout, "%lld ", v[i]);

    fclose(fin);
    fclose(fout);
    return 0;
}