Cod sursa(job #469968)

Utilizator loginLogin Iustin Anca login Data 10 iulie 2010 00:58:03
Problema Oz Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
# include <fstream>
# include <vector>
# include <algorithm>
# define l 2000000000
using namespace std;
struct nod {
	long long int i,j,c;
	nod (){}
	nod(int I, int J, int C){
		i=I;j=J;c=C;}
};
long long int n, m, v[10003];
vector<nod>V;

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

int verif ()
{
	for(vector<nod>::iterator I=V.begin();I<V.end();++I)
		if (cmmdc(v[I->i], v[I->j])!=I->c)
			return 0;
	return 1;
}

int main ()
{
	int i, j, c;
	ifstream fin ("oz.in");
	ofstream fout ("oz.out");
	fin>>n>>m;
	for(int i=1;i<=n;++i)
		v[i]=1;
	for(;m--;)
	{
		fin>>i>>j>>c;
		V.push_back(nod(i, j, c));
		v[i]=v[i]/cmmdc(c, v[i])*c;
		v[j]=v[j]/cmmdc(c, v[j])*c;
		if (v[i]>l || v[j]>l)
		{
			fout<<"-1";
			return 0;
		}
	}
	if(!verif())
		fout<<"-1";
	else
		for(int i=1;i<=n;++i)
			fout<<v[i]<<" ";
	return 0;
}