Cod sursa(job #1667447)

Utilizator NicolaalexandraNicola Alexandra Mihaela Nicolaalexandra Data 28 martie 2016 22:20:24
Problema Oz Scor 55
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <fstream>

using namespace std;

int n,m,i,j,a,b,r,d[100001],x[100001],y[100001],v[10001],ap,nr;

ifstream fin ("oz.in");

ofstream fout ("oz.out");

int main (){

    fin>>n>>m;
    for (i=1;i<=n;i++)
        v[i] = 1;
    for (i=1;i<=m;i++){
        fin>>x[i]>>y[i]>>d[i];
        // d - cmmmdc al lui a si b;
        // calculam cmmmc al lui v[x[i]] si d[i]
        a = v[x[i]];
        b = d[i];
        while (b!=0){
            r = a%b;
            a = b;
            b = r;
        }
        v[x[i]] = v[x[i]]*d[i]/a;

        a = v[y[i]];
        b = d[i];
        while (b!=0){
            r = a%b;
            a = b;
            b = r;
        }
        v[y[i]] = v[y[i]]*d[i]/a;

    }
    ap = 0;
    for (i=1;i<=m;i++){
        // calculam din nou cmmmc
        a = v[x[i]];
        b = v[y[i]];
        while (b!=0){
            r = a%b;
            a = b;
            b = r;
        }
       // nr = v[x[i]]*v[y[i]]/a;
        if (a != d[i] || v[x[i]] > 2000000000 || v[y[i]] > 2000000000)
            ap++;
    }
    if (ap == 0)
        for (i=1;i<=n;i++)
            fout<<v[i]<<" ";
    else
        fout<<-1;

    return 0;
}