Cod sursa(job #1278867)

Utilizator felixiPuscasu Felix felixi Data 29 noiembrie 2014 14:54:04
Problema Oz Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include<fstream>
using namespace std;

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

int i,n,m,x,y,d,ok;
int v1[100002], v2[100002], vd[100002];
long long a[10002];


long long 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;
}

long long cmmmc(long long a, long long b)
{
    return (a*b)/cmmdc(a,b);
}

int main()
{
    in>>n>>m;
    for(i=1;i<=n;++i)
        a[i]=1;
    ok=1;
    for(i=1;i<=m;++i)
    {
        in>>x>>y>>d;
        v1[i]=x;
        v2[i]=y;
        vd[i]=d;
        a[x]=cmmmc(a[x],d);
        a[y]=cmmmc(a[y],d);
    }

    for (i=1; i<=n; ++i)
        if (a[i]>2000000000)
        {
            ok=-1;
            break;
        }
    if(ok==1)
        for (i=1; i<=m; ++i)
            if ( cmmdc(a[v1[i]], a[v2[i]])!=vd[i] )
            {
                ok=-1;
                break;
            }

    if (ok==1)
    {
        out<<a[1];
        for(i=2; i<=n; ++i)
            out<<" "<<a[i];
        out<<"\n";
    }
    else
        out<<"-1\n";

    return 0;
}