Cod sursa(job #1846030)

Utilizator badea_adi1999Badea Adrian Catalin badea_adi1999 Data 12 ianuarie 2017 01:34:16
Problema Oz Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <fstream>
#include <vector>
#define nmax 100050
#define miliard 2000000000
using namespace std;
ifstream f("oz.in");
ofstream g("oz.out");
int n,m,x[nmax],y[nmax],z[nmax];
long long v[nmax];

int cmmdc(int x,int y)
{
    if (y==0)
        return x;
    return cmmdc(y,x%y);
}

int main()
{
    int i,j,t;
    f>>n>>m;
    for (i=1;i<=m;i++) {
        f>>x[i]>>y[i]>>z[i];
        if (v[x[i]]==0)
            v[x[i]]=z[i];
        else {
            t=cmmdc(v[x[i]],z[i]);
            v[x[i]]*=z[i]/t;
        }
        if (v[y[i]]==0)
            v[y[i]]=z[i];
        else {
            t=cmmdc(v[y[i]],z[i]);
            v[y[i]]*=z[i]/t;
        }
        if (v[x[i]]>miliard||v[y[i]]>miliard) {
            g<<-1;
            return 0;
        }
    }
    for (i=1;i<=n;i++) {
        if (v[i]==0)
            v[i]=1;
    }
    for (i=1;i<=m;i++)
        if (cmmdc(v[x[i]],v[y[i]])!=z[i]) {
            g<<-1;
            return 0;
        }
    for (i=1;i<=n;i++)
        g<<v[i]<<' ';

    return 0;
}