Cod sursa(job #516074)

Utilizator ms-ninjacristescu liviu ms-ninja Data 23 decembrie 2010 10:27:37
Problema Oz Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <fstream>
using namespace std;
#define dim 10001
long long unsigned v[dim];
long long 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);
}

long long cmmmc(long long a,long long b)
{
	return (a*b)/euclid(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]=cmmmc(v[i],d);
		v[j]=cmmmc(v[j],d);
		
		if(v[i]>max || v[j]>max)
		{
			ok=1;
			break;
		}
	}
	if(ok==1)
	{
		fout<<"-1" ;
		return 0;
	}

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