Cod sursa(job #1901857)

Utilizator copanelTudor Roman copanel Data 4 martie 2017 11:37:03
Problema Oz Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.89 kb
/* ( ‘_>’) */
#include <stdio.h>

#define MAX_N 10000
#define MAX_M 100000

int numere[MAX_N], t1[MAX_M], t2[MAX_M], t3[MAX_M];

inline int cmmdc(int a, int b) {
	int r;

	while (b > 0) {
		r = a % b;
		a = b;
		b = r;
	}

	return a;
}

inline int cmmmc(int a, int b) {
	return (long long)a * b / cmmdc(a, b);
}

int main() {
	FILE *fin, *fout;
	int n, m;
	int k;

	fin = fopen("oz.in", "r");
	fscanf(fin, "%d%d", &n, &m);

	for (k = 0; k < n; k++)
		numere[k] = 1;

	for (k = 0; k < m; k++) {
		fscanf(fin, "%d%d%d", &t1[k], &t2[k], &t3[k]);
		t1[k]--;
		t2[k]--;
		numere[t1[k]] = cmmmc(numere[t1[k]], t3[k]);
		numere[t2[k]] = cmmmc(numere[t2[k]], t3[k]);
	}
	fclose(fin);

	k = 0;
	while (k < m && cmmdc(numere[t1[k]], numere[t2[k]]) == t3[k])
		k++;

	fout = fopen("oz.out", "w");
	if (k < m)
		fprintf(fout, "%d", -1);
	else
		for (k = 0; k < n; k++)
			fprintf(fout, "%d ", numere[k]);

	return 0;
}