Pagini recente » Cod sursa (job #443187) | Cod sursa (job #541100) | Cod sursa (job #2547684) | Cod sursa (job #1923592) | Cod sursa (job #1414193)
#include <cstdio>
#include <algorithm>
using namespace std;
int v[10010];
struct triplet
{
int x, y, d;
} a[100010];
inline int cmmdc (int a, int b)
{
while (b)
{
a %= b;
swap (a, b);
}
return a;
}
int main ()
{
freopen ("oz.in", "r", stdin);
freopen ("oz.out", "w", stdout);
int n, m;
scanf ("%d %d", &n, &m);
int ma = 0;
for (int i = 1; i <= m; ++i)
scanf ("%d %d %d", &a[i].x, &a[i].y, &a[i].d);
for (int i = 1; i <= n; ++i)
v[i] = 1;
bool OK = true;
for (int i = 1; i <= m; ++i)
{
int xx = a[i].x;
int yy = a[i].y;
int dd = a[i].d;
int cdd = dd;
int c1 = cmmdc (dd, v[xx]);
int c2 = cmmdc (dd, v[yy]);
dd /= c1;
cdd /= c2;
long long z = 1LL * dd * v[xx];
if (z > 2000000000LL)
{
OK = false;
break;
}
v[xx] = z;
z = 1LL * cdd * v[yy];
if (z > 2000000000LL)
{
OK = false;
break;
}
v[yy] = z;
}
if (!OK)
{
printf ("-1\n");
return 0;
}
for (int i = 1; i <= m && OK; ++i)
{
int p = cmmdc (v[a[i].x], v[a[i].y]);
if (p != a[i].d) OK = false;
}
if (!OK)
{
printf ("-1\n");
return 0;
}
for (int i = 1; i <= n; ++i)
printf ("%d ", v[i]);
printf ("\n");
return 0;
}