Pagini recente » Cod sursa (job #2310500) | Borderou de evaluare (job #2483485) | Cod sursa (job #1023423) | Cod sursa (job #3270321) | Cod sursa (job #2660452)
#include <stdio.h>
#include <stdlib.h>
#define N 10000
#define M 100000
int cmmdc(long long a, long long b){
long long r;
while (b>0){
r=(long long)a%b;
a=(long long)b;
b=(long long)r;
}
return a;
}
long long cmmmc(long long a, int b){
return (long long)(a*b)/cmmdc(a, b);
}
int main()
{
FILE *fin=fopen("oz.in", "r");
FILE *fout=fopen("oz.out", "w");
int n ,m;
fscanf(fin, "%d%d", &n, &m);
int i, j ,d, k, v[N],u[3][100000];
//initializare vector
for (k=0; k<n; k++) v[k]=1;
//calculare elemente
for (k=0; k<m; k++){
fscanf(fin, "%d%d%d", &i, &j, &d);
i--;j--;
u[0][k]=i;
u[1][k]=j;
u[2][k]=d;
v[i]=cmmmc(v[i], d);
v[j]=cmmmc(v[j], d);
}
//test
//for (k=0; k<n; k++) printf("%d\n", v[k]);
//verificare solutie
int found=0;
for (k=0; k<m && !found; k++){
if (cmmdc(v[u[0][k]], v[u[1][k]])!=u[2][k]){
found=1;
}
}
//afisare
if (found) fprintf(fout, "-1");
else{
for (k=0;k<n;k++) fprintf(fout, "%d\n", v[k]);
}
return 0;
}