Cod sursa(job #1232873)

Utilizator space.foldingAdrian Soucup space.folding Data 24 septembrie 2014 09:16:02
Problema Oz Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.2 kb
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <string>
#include <map>
#include <set>
#include <cmath>
#include <fstream>
#include <ctime>
#include <bitset>
#include <limits>
#include <numeric>
#include <list>
#include <cstdlib>
#include <iomanip>
#include <vector>
#include <queue>
#include <stack>
#include <cctype>
using namespace std;
#define x first
#define y second

long long cmmdc(long long a, long long b) {
	long long r;
	do {
		r = a % b;
		a = b;
		b = r;
	} while(r);
	return a;
}

int main () {
#ifndef ONLINE_JUDGE
	freopen("oz.in", "r", stdin);
	freopen("oz.out", "w", stdout);
#endif
	cin.sync_with_stdio(false);
	int n, m;
	cin >> n >> m;



	vector<long long> v(n, 1);

	vector<int> x(m), y(m), d(m);	

	for(int i = 0; i < m; i++) {
		cin >> x[i] >> y[i] >> d[i];
		--x[i], --y[i];

		v[x[i]] *= (d[i] / cmmdc(v[x[i]], d[i]));
		v[y[i]] *= (d[i] / cmmdc(v[y[i]], d[i]));
	}

	for(int i = 0; i < m; i++)
		if(d[i] != cmmdc(v[x[i]], v[y[i]]) || v[x[i]] > 2000000000 || v[y[i]] > 2000000000)
		{
			cout << "-1\n";
			return 0;
		}


	for(int i = 0; i < v.size(); i++)
		cout << v[i] <<  " ";

	return 0;
}