Pagini recente » Cod sursa (job #1912611) | Cod sursa (job #1193504) | Cod sursa (job #139014) | Cod sursa (job #1977257) | Cod sursa (job #3188715)
#include <stdio.h>
#define MAXN 10000
#define MAXM 100000
long long v[MAXN];
int triplete[MAXM][3];
long long gcd(long long a, long long b) {
long long r;
while(b > 0) {
r = a % b;
a = b;
b = r;
}
return a;
}
long long lcm(long long a, long long b) {
return a / gcd(a, b) * b;
}
int main() {
FILE *fin, *fout;
int n, m, i;
fin = fopen("oz.in", "r");
fscanf(fin, "%d%d", &n, &m);
for(i = 0; i < n; i++)
v[i] = 1LL;
for(i = 0; i < m; i++) {
fscanf(fin, "%d%d%d", &triplete[i][0], &triplete[i][1], &triplete[i][2]);
v[triplete[i][0] - 1] = lcm(v[triplete[i][0] - 1], triplete[i][2]);
v[triplete[i][1] - 1] = lcm(v[triplete[i][1] - 1], triplete[i][2]);
}
fclose(fin);
i = 0;
while(i < m && gcd(v[triplete[i][0] - 1], v[triplete[i][1] - 1]) == triplete[i][2])
i++;
fout = fopen("oz.out", "w");
if(i < m) {
fprintf(fout, "-1\n");
} else {
for(i = 0; i < n; i++) {
fprintf(fout, "%lld ", v[i]);
}
fputc('\n', fout);
}
fclose(fout);
return 0;
}