Cod sursa(job #1841096)

Utilizator razvandraghiciDraghici Razvan razvandraghici Data 5 ianuarie 2017 12:12:41
Problema Oz Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <fstream>

using namespace std;

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

long long a, b, i, v[10003], d, n, m, c[100003][4], x;

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

int main()
{
    fin>>n>>m;
    for(i=1;i<=m;i++){
        fin>>a>>b>>d;
        c[i][0]=a;
        c[i][1]=b;
        c[i][2]=d;
        if(v[a]==0)
            v[a]=d;
        else{
            v[a]=v[a]*(d/cmmdc(v[a], d));
            if(v[a]>2000000000){
                fout<<-1;
                return 0;
            }
        }
        if(v[b]==0)
            v[b]=d;
        else{
            v[b]=v[b]*(d/cmmdc(v[b], d));
            if(v[b]>2000000000){
                fout<<-1;
                return 0;
            }
        }

    }

    for(i=1;i<=m;i++){
        a=v[c[i][0]];
        b=v[c[i][1]];
        x=cmmdc(a, b);
        if(x!=c[i][2]){
            fout<<-1;
            return 0;
        }
    }
    for(i=1;i<=n;i++){
        if(v[i]==0)
            v[i]=1;
        fout<<v[i]<<" ";
    }
    return 0;
}