Pagini recente » Cod sursa (job #3241868) | Cod sursa (job #920097) | Cod sursa (job #651881) | Cod sursa (job #3209379) | Cod sursa (job #555315)
Cod sursa(job #555315)
#include <stdio.h>
#define MA 101001
using namespace std;
typedef struct {long long a,b,d;} TRIPLET;
TRIPLET A[MA];
long long n,m;
long long REZ[11001];
FILE *f,*g;
void citire()
{
int i;
fscanf(f,"%lld %lld",&n,&m);
for (i=1;i<=m;++i)
fscanf(f,"%lld %lld %lld",&A[i].a,&A[i].b,&A[i].d);
}
int cmmdc(int a, int b)
{
int r;
r=a%b;
while (r!=0)
{
a=b;
b=r;
r=a%b;
}
return b;
}
int cmmmc(int a, int b)
{
if (a>=b)
return ((a*b)/cmmdc(a,b));
else
return ((a*b)/cmmdc(b,a));
}
void solve()
{
int i,ok;
for (i=1;i<=n;++i)
REZ[i]=1;
for (i=1;i<=m;++i)
{
REZ[A[i].a]=cmmmc(REZ[A[i].a],A[i].d);
REZ[A[i].b]=cmmmc(REZ[A[i].b],A[i].d);
}
ok=1;
for (i=1;i<=m;++i)
if (cmmdc(REZ[A[i].a],REZ[A[i].b])!=A[i].d || REZ[A[i].a]>=2000000000 || REZ[A[i].b]>=2000000000)
{
ok=0;
break;
}
if (ok)
for (i=1;i<=n;++i)
fprintf(g,"%lld ",REZ[i]);
else
fprintf(g,"%d",-1);
}
int main()
{
f=fopen("oz.in","r");
g=fopen("oz.out","w");
citire();
solve();
fclose(f);
fclose(g);
return 0;
}