Cod sursa(job #718785)

Utilizator scipianusFMI Ciprian Olariu scipianus Data 21 martie 2012 09:13:08
Problema Oz Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include<fstream>
using namespace std;
int n,m;
long long v[10100],A[100100],B[100100],Div[100100];
bool ok=true;

inline long long Cmmdc(long long A,long long B)
{
	long long r;
	while(B)
	{
		r=A%B;
		A=B;
		B=r;
	}
	return A;
}

void Citire_Rezolvare()
{
	int i;
	long long cmmdc;
	ifstream fin("oz.in");
	fin>>n>>m;
	for(i=1;i<=n;i++)
		v[i]=1LL;
	for(i=1;i<=m;i++)
	{
		fin>>A[i]>>B[i]>>Div[i];
		cmmdc=Cmmdc(v[A[i]],Div[i]);
		v[A[i]]=(v[A[i]]*Div[i])/cmmdc;
		cmmdc=Cmmdc(v[B[i]],Div[i]);
		v[B[i]]=(v[B[i]]*Div[i])/cmmdc;
	}
}

void Verificare()
{
	int i;
	long long cmmdc;
	for(i=1;i<=m;i++)
	{
		cmmdc=Cmmdc(v[A[i]],v[B[i]]);
		if(cmmdc!=Div[i])
		{
			ok=false;
			return;
		}
	}
}

void Afisare()
{
	ofstream fout("oz.out");
	if(ok==false)
		fout<<"-1"<<"\n";
	else
	{
		int i;
		for(i=1;i<=n;i++)
			fout<<v[i]<<' ';
		fout<<"\n";
	}
	fout.close();
}

int main()
{
	Citire_Rezolvare();
	Verificare();
	Afisare();
	return 0;
}