Pagini recente » Istoria paginii utilizator/diana523 | Monitorul de evaluare | Istoria paginii utilizator/seumas | Cod sursa (job #1355092) | Cod sursa (job #461306)
Cod sursa(job #461306)
#include <stdio.h>
using namespace std;
#define MAX 2000000000
long int v[100001];
int m, n, i, j, k;
int cm;
struct numere
{
int x;
int y;
int div;
};
struct numere nr[10001];
int cmmdc (int a, int b)
{
int r;
while (b)
{
r = a % b;
a = b;
b = r;
}
return a;
}
int cmmmc (int a, int b)
{
return a * b / cmmdc (a, b);
}
int main ()
{
FILE *f = fopen ("oz.in","r");
FILE *g = fopen ("oz.out","w");
fscanf (f,"%d %d", &n, &m);
for (k=1; k<=m; ++k)
fscanf (f,"%d %d %d", &nr[k].x, &nr[k].y, &nr[k].div);
for (k=1; k<=m; ++k)
{
cm = 1;
cm *= nr[k].div;
for (j=1; j<=m; ++j)
{
if (j != k)
{
if (nr[k].x == nr[j].x || nr[k].x == nr[j].y)
cm *= nr[j].div;
}
}
if (!v[nr[k].x])
v[nr[k].x] = cm;
}
for (k=1; k<=m; ++k)
{
cm = 1;
cm *= nr[k].div;
for (j=1; j<=m; ++j)
{
if (j != k)
{
if (nr[k].y == nr[j].y || nr[k].y == nr[j].x)
cm *= nr[j].div;
}
}
if (!v[nr[k].y])
v[nr[k].y] = cm;
}
for (i=1; i<=n; ++i)
{
if (cmmdc (v[nr[i].x], v[nr[i].y]) != nr[i].div || v[i] > MAX)
{
fprintf (g,"-1");
return 0;
}
}
for (i=1; i<=n; ++i)
fprintf (g,"%ld ", v[i]);
return 0;
}