Cod sursa(job #1601401)

Utilizator tziplea_stefanTiplea Stefan tziplea_stefan Data 15 februarie 2016 21:45:43
Problema Oz Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <fstream>
#define NM 10005
#define VAL 100005

using namespace std;

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

struct triplet
{
    int a;
    int b;
    int c;
};

triplet x[VAL];

int N, M, i;
int v[NM], nr;
bool ok;

int cmmdc(long long a, long long b)
{
    long long r;
    r=a % b;
    while (r!=0)
    {
        a=b;
        b=r;
        r=a % b;
    }
    return b;
}

int main()
{
    fin >> N >> M;
    for (i=1; i<=N; i++)
      v[i]=1;
    for (i=1; i<=M; i++)
    {
        fin >> x[i].a >> x[i].b >> x[i].c;
        nr=cmmdc(v[x[i].a], x[i].c);
        v[x[i].a]*=x[i].c / nr;
        nr=cmmdc(v[x[i].b], x[i].c);
        v[x[i].b]*=x[i].c / nr;
    }
    for (i=1; i<=M; i++)
    {
        if (cmmdc(v[x[i].a], v[x[i].b])!=x[i].c)
        {
            ok=true;
            break;
        }
    }
    if (ok==true)
      fout << -1;
    else
      for (i=1; i<=N; i++)
        fout << v[i] << " ";
    fin.close();
    fout.close();
    return 0;
}