Cod sursa(job #2634646)

Utilizator andrei_marciucMarciuc Andrei andrei_marciuc Data 11 iulie 2020 20:14:11
Problema Oz Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <fstream>
using namespace std;
ifstream cin( "oz.in" );
ofstream cout( "oz.out" );
long long v[ 10007 ];
struct Andrei{
    int l, r;
    int d;
} a[ 100007 ];

long long cmmdc( int x, int y ){
    int r = 0;
    while( y ){
        r = x % y;
        x = y;
        y = r;
    }
    return ( long long )x;
}
int main()
{
    int n, m, i, j, d;
    cin >> n >> m;
    for( i = 1; i <= n; i++ )
        v[ i ] = 1;
    for( int k = 1; k <= m; k++ ){
        cin >> i >> j >> d;
        v[ i ] = v[ i ] * d / cmmdc( v[ i ], d );
        v[ j ] = v[ j ] * d / cmmdc( v[ j ], d );
        a[ k ].l = i;
        a[ k ].r = j;
        a[ k ].d = d;
    }
    for( i = 1; i <= n; i++ )
        if( v[ i ] > 2000000000 || v[ i ] < 0 ){
            cout << -1;
            return 0;
        }
    for( i = 1; i <= m; i++ )
        if( cmmdc( v[ a[ i ].l ], v[ a[ i ].r ] ) != a[ i ].d ){
            cout << -1;
            return 0;
        }
    for( int i = 1; i <= n; i++ )
        cout << v[ i ] << ' ';
    return 0;
}