Cod sursa(job #193840)

Utilizator Omega91Nicodei Eduard Omega91 Data 7 iunie 2008 13:38:36
Problema Oz Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <cstdio>
#define VMAX 
unsigned long long cmmdc(int x, int y)
{
	int r;
	do {
		r = x % y;
		x = y;
		y = r;
	} while(r);
	return x;
}

int cmmmc(int x, int y) 
{
	unsigned long long rasp = (unsigned long long)x * (unsigned long long)y / cmmdc(x, y);
	//return rasp > VMAX ? 0 : (int)rasp;
	return (int)rasp;
}

int main()
{
	int x[100005], n, m, i, j, d, rasp = 1;
	//int nj, ni;
	FILE *f1, *f2;
	f1 = fopen("oz.in", "r");
	f2 = fopen("oz.out", "w");
	fscanf(f1, "%d%d", &n, &m);
	for (i = 1; i <= n; ++i) x[i] = 1;
	for (int t = 1; t <= m; ++t) {
		fscanf(f1, "%d%d%d", &i, &j, &d);
		x[i] = cmmmc(x[i], d);
		x[j] = cmmmc(x[j], d);
		if (cmmdc(x[i], x[j]) != (unsigned)d) {
			rasp = 0;
			break;
		}
	}
	if (rasp == 0) fprintf(f2, "-1\n");
	else {
		for (i = 1; i <= n; ++i)
			fprintf(f2, "%d ", x[i]);
		fprintf(f2, "\n");
	}
	fclose(f1);
	fclose(f2);
	return 0;
}