Cod sursa(job #469129)

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

int cmmdc (int a, int b)
{
	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 || v[I->i]>l || v[I->j]>l)
			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]*c/cmmdc(c, v[i]);
		v[j]=v[j]*c/cmmdc(c, v[j]);
	}
	if(!verif())
		fout<<"-1";
	else
		for(int i=1;i<=n;++i)
			fout<<v[i]<<" ";
	return 0;
}