Cod sursa(job #3120694)

Utilizator Traian_7109Traian Mihai Danciu Traian_7109 Data 8 aprilie 2023 08:51:32
Problema Oz Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.2 kb
#include <fstream>

using namespace std;

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

typedef long long LL;
LL v[10005];
const LL LIM = 2000000000;

struct divz {
    short poz1, poz2;
    LL cmmdivc;
}
w[100005];

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

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

int main()
{
    short n;
    int m;
    fin>>n>>m;
    
    for (short i = 1; i <= n; i++) {
        v[i] = 1;
    }
    
    for (int i = 1; i <= m; i++) {
        fin>>w[i].poz1>>w[i].poz2>>w[i].cmmdivc;
        v[w[i].poz1] = cmmmc(v[w[i].poz1], w[i].cmmdivc);
        v[w[i].poz2] = cmmmc(v[w[i].poz2], w[i].cmmdivc);
        
        if (v[w[i].poz1] > LIM || v[w[i].poz2] > LIM) {
            fout<<-1;
            return 0;
        }
    }
    
    for (int i = 1; i <= m; i++) {
        if (cmmdc(v[w[i].poz1], v[w[i].poz2]) != w[i].cmmdivc) {
            fout<<-1;
            return 0;
        }
    }
    
    for (short i = 1; i <= n; i++) {
        if (v[i] > LIM) {
            fout<<-1;
            return 0;
        }
    }
    
    for (short i = 1; i <= n; i++) {
        fout<<v[i]<<' ';
    }
    
    return 0;
}