Cod sursa(job #771279)

Utilizator SteveStefan Eniceicu Steve Data 25 iulie 2012 13:52:13
Problema Oz Scor 45
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <fstream>

using namespace std;

int N, M;
int v[10005];

int cmmdc (int a, int b) {
	while (a && b)
	{
		if (a > b) a %= b;
		else b %= a;
	}
	if (a) return a;
	return b;
}

int main () {
	ifstream fin ("oz.in");
	fin >> N >> M;
	int A, B, d, broken = 0;
	for (int i = 1; i <= N; i++)
	{
		v[i] = 1;
	}
	for (int i = 0; i < M; i++)
	{
		fin >> A >> B >> d;
		v[A] = v[A] * d / cmmdc (v[A], d);
		v[B] = v[B] * d / cmmdc (v[B], d);
		if (cmmdc (v[A], v[B]) != d)
		{
			broken = 1;
			break;
		}
	}
	fin.close ();
	ofstream fout ("oz.out");
	if (broken) fout << "-1";
	else
	{
		for (int i = 1; i <= N; i++)
		{
			fout << v[i] << " ";
		}
	}
	fout.close ();
	return 0;
}