Cod sursa(job #2924109)

Utilizator AnSeDraAndrei Sebastian Dragulescu AnSeDra Data 25 septembrie 2022 15:54:55
Problema Oz Scor 55
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.2 kb
#include <fstream>

using namespace std;

#define Nmax 10000
#define Mmax 100000

struct Triplet
{
    int poz1;
    int poz2;
    int d;
};

int v[Nmax];
Triplet p[Mmax];

int cmmdc(int a, int b)
{
    int r;
    while(b != 0)
    {
        r = a % b;
        a = b;
        b = r;
    }
    return a;
}

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

int main()
{
    ifstream fin("oz.in");
    ofstream fout("oz.out");

    int n, m, i, poz1, poz2, d, ok;

    fin >> n >> m;

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

    for(i = 1; i <= m; i++)
    {
        fin >> poz1 >> poz2 >> d;
        p[i].poz1 = poz1;
        p[i].poz2 = poz2;
        p[i].d = d;
        v[poz1] = cmmmc(v[poz1], d);
        v[poz2] = cmmmc(v[poz2], d);
    }

    ok = 1;
    for(i = 1; i <= m; i++)
    {
        if(cmmdc(v[p[i].poz1], v[p[i].poz2]) != p[i].d)
        {
            ok = 0;
            break;
        }
    }

    if(ok == 0)
    {
        fout << -1;
    }
    else
    {
        for(i = 1; i <= n; i++)
        {
            fout << v[i] << " ";
        }
    }

    return 0;
}