Cod sursa(job #2633476)

Utilizator nicolaee2Martinescu Nicolae nicolaee2 Data 7 iulie 2020 16:13:49
Problema Oz Scor 55
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <iostream>
#include<fstream>


using namespace std;

ifstream fin("oz.in");
ofstream fout("oz.out");
#define NMAX 100005

int ma[NMAX][3];
int n,m;

int v[NMAX];

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) {
    int r;
    r = a * b / cmmdc(a, b);

    return r;

}

int main()
{

    fin>>n>>m;

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

    for(int i=1;i<=m;i++)
    {
        int a,b,c;

        fin>>a>>b>>c;

        v[a] = cmmmc(v[a],c);
        v[b] = cmmmc(v[b],c);

        ma[i][0] = a;
        ma[i][1] = b;
        ma[i][2] = c;

    }

    int ok = 1;
    for(int i=1;i<=m;i++)
    {
        int a,b,c;
        a = ma[i][0];
        b = ma[i][1];
        c = ma[i][2];
        if(cmmdc(v[a],v[b]) != c)
            ok = 0;
    }

    for(int i=1;i<=n;i++)
    {
        if(v[i] > 2e9)
            ok = 0;
    }

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

    return 0;
}