Cod sursa(job #3037750)

Utilizator Gabriel_DascalescuGabriel Dascalescu Gabriel_Dascalescu Data 26 martie 2023 13:09:39
Problema Oz Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <fstream>
#define nmax 100005

using namespace std;

ifstream in("oz.in");
ofstream out("oz.out");

long long v[nmax];

long long n, m, x, y, d, temp;

bool ok = true;

struct lol
{
    long long xx, xy, xd;
};

lol v1[nmax];

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

int main()
{
    in>>n>>m;
    for(int i=1; i<=n; i++)
        v[i] =1;
    for(int i=1; i<=m; i++)
    {
        in>>x>>y>>d;
        v1[i].xx = x;
        v1[i].xy = y;
        v1[i].xd = d;
        temp = cmmdc(d,v[x]);
        v[x] *= d;
        v[x] /= temp;
        temp = cmmdc(d,v[y]);
        v[y] *= d;
        v[y] /=temp;
    }
    for(int i=1; i<=m; i++)
    {
        if(cmmdc(v[v1[i].xx],v[v1[i].xy])!= v1[i].xd)
        {
            ok = false;
            break;
        }
    }
    if(ok == true)
    {
        for(int i=1; i<=n; i++)
        {
            out<<v[i]<<" ";
        }
    }
    else
        out<<"-1\n";
    return 0;
}