Pagini recente » Cod sursa (job #2760186) | Cod sursa (job #3038362) | Cod sursa (job #1749176) | Cod sursa (job #185011) | Cod sursa (job #2943132)
#include <fstream>
#include <iostream>
#include <math.h>
using namespace std;
ifstream in ("oz.in"); ofstream out ("oz.out");
int N, M; /// un vector cu N numere; M triplete
int cmmdc(int a, int b){
if( a == 0 ) return b;
return cmmdc(b%a,a);
}
int cmmmc(int a, int b){
return ((a/cmmdc(a,b))*b);
}
int main(){
int v[10001] = {1};
in >> N >> M;
bool solutie = true;
struct ijd{
int i, j, d;
}triplet[M+1];
for(int z = 1 ; z <= 10000; z++) v[z] = 1;
for(int x = 1 ; x <= M; x++){
/**< Se memoreaza tripletele pentru a se putea verifica vectorul final */
in >> triplet[x].i >> triplet[x].j >> triplet[x].d;
v[triplet[x].i] = cmmmc(v[triplet[x].i],triplet[x].d);
v[triplet[x].j] = cmmmc(v[triplet[x].j],triplet[x].d);
}
/**< Verificare */
/// se parcurg din nou tripletele
/// daca un triplet i j d nu se verifica solutie = false
for(int x = 1 ; x <= M; x++){
int aux = cmmdc(v[triplet[x].i],(v[triplet[x].j]));
if(aux != triplet[x].d) solutie = false;
/// verificare cmmdc de vi si vj = d alfel solutie = false
}
if(solutie == true) for(int x = 1 ; x <= N; x++) out << v[x] << " ";
else out << "-1";
in.close(); out.close();
return 0;
}