Pagini recente » Cod sursa (job #43247) | Cod sursa (job #2843690) | Cod sursa (job #233690) | Cod sursa (job #2788047) | Cod sursa (job #164021)
Cod sursa(job #164021)
#include<stdio.h>
#define INPUT "oz.in"
#define OUTPUT "oz.out"
#define NMAX 10001
FILE *fin = fopen(INPUT, "r"),*fout = fopen(OUTPUT, "w");
typedef struct lista
{
long value;
struct lista *next;
};
lista *p[ NMAX ];
long N, M;
long minDiv[ NMAX ];
void readValues();
void solveFunction();
inline long euclid(long, long);
int main()
{
readValues();
solveFunction();
fclose(fin);
fclose(fout);
return 0;
}
void readValues()
{
lista *adr;
long nod1, nod2, diviz;
fscanf(fin, "%ld %ld", &N, &M);
for(long i = 0; i <= M; ++i)
{
fscanf(fin, "%ld %ld %ld", &nod1, &nod2, &diviz);
adr = new lista;
adr -> value = diviz;
adr -> next = p[ nod1 - 1 ];
p[ nod1 - 1 ] = adr;
adr = new lista;
adr -> value = diviz;
adr -> next = p[ nod2 - 1 ];
p[ nod2 - 1 ] = adr;
}
}
void solveFunction()
{
long long temp;
lista *adr;
for(long i = 0; i < N; ++i)
{
adr = p[ i ];
minDiv[ i ] = adr -> value;
while(adr -> next != NULL)
{
adr = adr -> next;
temp = (long long)minDiv[ i ] * (long long) (adr -> value);
minDiv[ i ] = temp / euclid(minDiv[ i ], adr -> value);
}
fprintf(fout, "%ld ", minDiv[ i ]);
}
fprintf(fout, "\n");
}
inline long euclid(long A, long B)
{
if(!B) return A;
else return euclid(B, A%B);
}