Cod sursa(job #1388046)

Utilizator StarGold2Emanuel Nrx StarGold2 Data 15 martie 2015 01:13:41
Problema Oz Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.28 kb
#include <fstream>
#define DIM 10010
using namespace std;

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

long long N, M, i, j, K, x, y, z;
long long Q, V[DIM], ok;
int W[DIM*10][3];

void SetUp(){
     fin >> N >> Q;
     for(i = 1; i <= N; i ++)
          V[i] = 1;
     return;
}

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

void CodeExpert(){
     ok = 1;
     for(i = 1; i <= Q; i ++){
          fin >> x >> y >> z;
          W[i][0] = x;
          W[i][1] = y;
          W[i][2] = z;
          V[x] = (V[x] * z) / (cmmdc(V[x], z));
          V[y] = (V[y] * z) / (cmmdc(V[y], z));
          if(cmmdc(V[x], V[y]) != z){
               ok = 0; break;
          }
     }
     return;
}

void Verify(){
     for(i = 1; i <= Q; i ++){
          x = W[i][0];
          y = W[i][1];
          z = W[i][2];
          if(cmmdc(V[x], V[y]) != z){
               ok = 0; break;
          }
     }
     return;
}

void Finish(){
     if(ok == 0){
          fout << -1;
          return;
     }
     for(i = 1; i <= N; i ++)
          fout << V[i] << " ";
     return;
}

int main(){
     SetUp();
     CodeExpert();
     Verify();
     Finish();
     return 0;
}