Cod sursa(job #2213394)

Utilizator memecoinMeme Coin memecoin Data 16 iunie 2018 13:12:33
Problema Oz Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <stdio.h>
#include <vector>
#include <algorithm>
#include <math.h>
 
using namespace std;

struct query {
	int a, b, c;
};

int v[20005];
query q[100005];
int n, m;

int cmmdc(int a, int b) {
	if (b == 0) {
		return a;
	}
	return cmmdc(b, a % b);
}

int main() {
	freopen("oz.in", "r", stdin);
	freopen("oz.out", "w", stdout);

	scanf("%d %d", &n, &m);

	for (int i = 1; i <= n; ++i) {
		v[i] = 1;
	}

	for (int i = 0; i < m; ++i) {
		int a, b, c;
		scanf("%d %d %d", &a, &b, &c);
		q[i] = { a, b, c };

		if (cmmdc(v[a], v[b]) >= c) {
			continue;
		}

		int ca = cmmdc(v[a], c);
		int cb = cmmdc(v[b], c);

		v[a] *= c / ca;
		v[b] *= c / cb;
	}

	for (int i = 0; i < m; ++i) {
		if (cmmdc(v[q[i].a], v[q[i].b]) != q[i].c) {
			printf("-1");
			return 0;
		}
	}

	for (int i = 1; i <= n; ++i) {
		printf("%d ", v[i]);
	}

	return 0;
}