Cod sursa(job #516069)

Utilizator ms-ninjacristescu liviu ms-ninja Data 23 decembrie 2010 09:33:29
Problema Oz Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <fstream>
using namespace std;
#define dim 10000
long long unsigned v[dim];
int aux[dim*10],aux1[dim*10],aux2[dim*10];


long long euclid(int a,int b)
{
	if(b==0)
		return a;
	else
		return euclid(b,a%b);
}

int main()
{
	
	ifstream fin("oz.in");
	ofstream fout("oz.out");
	int n, m;
	fin>> n >>m;
	long long unsigned i, j,d,max=2000000000,ok=0;
	for(i=1;i<=n;++i)
		v[i]=1;
	int dap=m;
	for( ; m;--m)
	{
		fin>>i >>j >>d;
		aux[m]=i;
		aux1[m]=j;
		aux2[m]=d;
		v[i]=(v[i]*d)/euclid(v[i],d);
		v[j]=(v[j]*d)/euclid(v[j],d);
		if(v[i]>max || v[j]>max)
		{
			ok=1;
			break;
		}
	}
	if(ok==1)
	{fout<<"-1" ;return 0;}

	int gasit=0;
	i=1;
		while(i<=dap && gasit==0)
		{
			if(euclid(v[aux[i]],v[aux1[i]])!=aux2[i])
				gasit=1;
			++i;
		}
		if(gasit==1)
			fout<<"-1";
		else
			for(i=1;i<=n;++i)
				fout<<v[i] <<" ";
		
		
	return 0;
}