Cod sursa(job #1151781)

Utilizator alexalghisiAlghisi Alessandro Paolo alexalghisi Data 24 martie 2014 12:53:46
Problema Oz Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <iostream>
#include <fstream>

#define LL long long
#define DN 10005
#define DM 100005
using namespace std;

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

struct st{
    LL a,b,c;
}M[DM];

LL v[DN],n,m;

LL cmmdc(LL a,LL b){

    LL c;
    while(b){
        c=a%b;
        a=b;
        b=c;
    }
    return a;
}
LL cmmmc(LL a,LL b){

    return (a*b)/cmmdc(a,b);
}
void init(){

    for(int i=1;i<=n;++i)
        v[i] = 1;
}

void read(){

    f>>n>>m;
    init();
    for(int i=1;i<=m;++i){

        LL a,b,d;
        f>>a>>b>>d;
        M[i].a = a; M[i].b = b; M[i].c = d;
        v[a] = cmmmc(v[a],d);
        v[b] = cmmmc(v[b],d);
    }
}

bool check(){

    for(int i=1;i<=m;++i)
        if(cmmdc( v[M[i].a] , v[M[i].b] ) != M[i].c)
            return false;
    return true;
}

void write(){

    if(!check()){

        g<<-1;
        return;
    }
    for(int i=1;i<=n;++i)
        g<<v[i]<<" ";
}


int main()
{
    read();
    write();

    return 0;
}