Pagini recente » Cod sursa (job #337299) | Istoria paginii runda/oni2009x1 | Cod sursa (job #989417) | Cod sursa (job #727664) | Cod sursa (job #461325)
Cod sursa(job #461325)
#include <stdio.h>
#include <vector>
using namespace std;
#define MAX 2000000000
int m, n, i, j, k;
int cm;
struct numere
{
long int x;
long int y;
long int div;
};
struct numere nr[100010];
long int cmmdc (long int a, long int b)
{
long int r;
while (b)
{
r = a % b;
a = b;
b = r;
}
return a;
}
long int cmmmc (long int a, long 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);
vector <int> v (n + 1, 1);
for (k=1; k<=m; ++k)
{
fscanf (f,"%ld %ld %ld", &nr[k].x, &nr[k].y, &nr[k].div);
v[nr[k].x] = cmmmc (v[nr[k].x],nr[k].div);
v[nr[k].y] = cmmmc (v[nr[k].y],nr[k].div);
}
for (i=1; i<=m; ++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,"%d ", v[i]);
fclose(g);
fclose(f);
return 0;
}