Cod sursa(job #219476)

Utilizator alex_mircescuAlex Mircescu alex_mircescu Data 6 noiembrie 2008 23:07:25
Problema Oz Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <stdio.h>
#include <cstdlib>

long long i, m, n, p[100010], q[100010], v[10010], d[100010];

long gcd(long a, long b) {
    if (!b) return a;
    return gcd(b, a % b);
}

void ch() {
	for (long i = 1; i <= m; ++i) {
		if (gcd(v[p[i]], v[q[i]]) != d[i])  {
			printf("-1");
			exit(0);
		}
	}
}

int main() {
	freopen("oz.in", "r", stdin);
	freopen("oz.out", "w", stdout);
	scanf("%lld %lld", &n, &m);
	for (i = 1; i <= n; ++i) v[i] = 1;
	for (i = 1; i <= m; ++i) {
		scanf("%ld %ld %ld", &p[i], &q[i], &d[i]);
		v[p[i]] = (v[p[i]] * d[i]) / gcd(v[p[i]], d[i]);
		v[q[i]] = (v[q[i]] * d[i]) / gcd(v[q[i]], d[i]);		
	}
	ch();
	for (i = 1; i <= n; ++i) {
		printf("%lld ", v[i]);
	}
	return 0;
}