Pagini recente » Istoria paginii autumn-warmup-2007/clasament/runda-2 | Cod sursa (job #165058) | Cod sursa (job #2012311) | Cod sursa (job #2037569) | Cod sursa (job #1571566)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("oz.in");
ofstream fout("oz.out");
const int NMAX = 10005;
const int MMAX = 100005;
const long long INF = 2000000000;
struct solve{
int i,j,d;
}D[NMAX];
int V[NMAX];
int cmmdc(int x,int y){
if(y == 0)
return x;
cmmdc(y,x%y);
}
int main()
{
int n,m,x,y,d,ok = 1,a,b;
fin >> n >> m;
for(int i = 1; i <= n; i++)
V[i] = 1;
for(int i = 1; i <= m ; i++){
fin >> x >> y >> d;
D[i] = {x,y,d};
a = d/cmmdc(V[x],d);
b = d/cmmdc(V[y],d);
if((1ULL*V[x]*a) <= INF )
V[x] *= a;
if((1ULL*V[y]*b) <= INF )
V[y] *= b;
if((1ULL*V[x]*a) > INF || (1ULL*V[y]*b) > INF){
i = m + 1;
ok = 0;
}
}
for(int i = 1; i <= m ;i++){
if(cmmdc(V[D[i].i],V[D[i].j]) != D[i].d){
i = m + 1;
ok = 0;
}
}
if(ok == 1)
for(int i = 1; i <= n;i++)
fout << V[i] << " ";
else
fout << -1;
return 0;
}