Cod sursa(job #2633471)

Utilizator nicolaee2Martinescu Nicolae nicolaee2 Data 7 iulie 2020 16:01:40
Problema Oz Scor 55
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.21 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)
{
    while(b)
    {
        int r = a%b;
        a = b;
        b = r;
    }
    return a;
}

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

int main()
{

    fin>>n>>m;

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

    for(int i=1;i<=m;i++)
    {
        fin>>ma[i][0]>>ma[i][1]>>ma[i][2];
        int nr1 = v[ma[i][0]];
        int nr2 = v[ma[i][1]];
        int val = ma[i][2];

        //cout<<ma[i][0]<<" "<<ma[i][1]<<" "<<val<<endl;

        if(nr1 % val != 0)
        {
            int nou = cmmmc(nr1,val);
            v[ma[i][0]] = nou;
        }

        if(nr2 % val != 0)
        {
            int nou = cmmmc(nr2,val);
            v[ma[i][1]] = nou;
        }
    }

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

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

    return 0;
}