Cod sursa(job #562369)

Utilizator gabipurcaruGabi Purcaru gabipurcaru Data 22 martie 2011 21:43:42
Problema Oz Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
// infoarena: problema/oz //
#include <fstream>
using namespace std;

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

const int MAXN = 10010;
const int MAXM = 100010;

int gcd(int a, int b)
{
    int r=1;
    while(r)
    {
        r = a%b;
        a = b;
        b = r;
    }
    return a;
}

int n,m,i,j,x[MAXN],a[MAXM],b[MAXM],d[MAXM];

int main()
{
    in>>n>>m;

    if(m == 0)
    {
        out<<-1;
        return 0;
    }
    for(i=1; i<=n; i++)
        x[i] = 1;
    for(i=1; i<=m; i++)
    {
        in>>a[i]>>b[i]>>d[i];
        if(gcd(x[a[i]], x[b[i]]) > d[i])
        {
            out<<-1;
            return 0;
        }
        x[a[i]] *= d[i]/gcd(x[a[i]], d[i]);
        x[b[i]] *= d[i]/gcd(x[b[i]], d[i]);
    }
    for(i=1; i<=m; i++)
        if(gcd(x[a[i]], x[b[i]]) != d[i])
        {
            out<<-1;
            return 0;
        }
    for(i=1; i<=n; i++)
        out<<x[i]<<' ';

    return 0;
}