Pagini recente » Cod sursa (job #295931) | Cod sursa (job #556989) | Cod sursa (job #2023246) | Cod sursa (job #207079) | Cod sursa (job #164039)
Cod sursa(job #164039)
#include<stdio.h>
#include<string.h>
#define INPUT "oz.in"
#define OUTPUT "oz.out"
#define NMAX 10001
#define VMAX 2000000000
#define CL(x) memset(x,0,sizeof(x));
FILE *fin = fopen(INPUT, "r"),*fout = fopen(OUTPUT, "w");
long N, M;
long long minDiv[ NMAX ];
void readValues();
void solveFunction();
inline long euclid(long, long);
void printSolution();
int main()
{
readValues();
solveFunction();
fclose(fin);
fclose(fout);
return 0;
}
void readValues()
{
fscanf(fin, "%ld %ld", &N, &M);
}
void solveFunction()
{
long long temp;
int Valid = 1;
long nod1, nod2, diviz;
for(long i = 0; i < M; ++i)
{
fscanf(fin, "%ld %ld %ld", &nod1, &nod2, &diviz);
if(minDiv[ nod1 - 1 ])
{
temp = (long long)minDiv[ nod1 - 1 ] * (long long)diviz;
minDiv[ nod1 - 1 ] = temp / euclid(minDiv[ nod1 - 1 ], diviz);
}
else
minDiv[ nod1 - 1 ] = diviz;
if(minDiv[ nod2 - 1 ])
{
temp = (long long)minDiv[ nod2 - 1 ] * (long long)diviz;
minDiv[ nod2 - 1 ] = temp / euclid(minDiv[ nod2 - 1 ], diviz);
}
else
minDiv[ nod2 - 1 ] = diviz;
if(minDiv[ nod1 - 1 ] > VMAX)
{
fprintf(fout, "-1\n");
Valid = 0;
}
else
if(minDiv[ nod2 - 1 ] > VMAX)
{
fprintf(fout, "-1\n");
Valid = 0;
}
}
if(Valid) printSolution();
}
inline long euclid(long A, long B)
{
if(!B) return A;
else return euclid(B, A%B);
}
void printSolution()
{
int Valid = 1;
for(long i = 0; i < N; ++i)
if(!minDiv[ i ])
{
fprintf(fout, "-1");
Valid = 0;
break;
}
if(Valid)
for(long i = 0; i < N; ++i)
fprintf(fout, "%lld ", minDiv[ i ]);
fprintf(fout, "\n");
}