Cod sursa(job #771281)

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

using namespace std;

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 () {
	int N, M;
	int v[10005];
	int x[100005][3];
	ifstream fin ("oz.in");
	fin >> N >> M;
	for (int i = 1; i <= N; i++)
	{
		v[i] = 1;
	}
	for (int i = 0; i < M; i++)
	{
		fin >> x[i][0] >> x[i][1] >> x[i][2];
		v[x[i][0]] = v[x[i][0]] / cmmdc (v[x[i][0]], x[i][2]) * x[i][2];
		v[x[i][1]] = v[x[i][1]] / cmmdc (v[x[i][1]], x[i][2]) * x[i][2];
	}
	fin.close ();
	ofstream fout ("oz.out");
	for (int i = 0; i < M; i++)
	{
		if (cmmdc (v[x[i][0]], v[x[i][1]]) != x[i][2])
		{
			fout << "-1";
			fout.close ();
			return 0;
		}
	}
	for (int i = 1; i <= N; i++)
	{
		fout << v[i] << " ";
	}
	fout.close ();
	return 0;
}