Cod sursa(job #469960)

Utilizator bora_marianBora marian bora_marian Data 9 iulie 2010 22:12:04
Problema Oz Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include<fstream>
using namespace std;
long long v[10003],n,m;
int cmmdc(int a,int b);
int verif();
struct triplet{
   int a;
   int b;
   int d;};
 triplet nr[100010];  
int cmmmc(int a,int b);
int main()
{
	ifstream fin("oz.in");
	ofstream fout("oz.out");
	fin>>n;
	fin>>m;
	int i;
	for(i=1;i<=n;i++)
		v[i]=1;
	for(i=1;i<=m;i++)
	{
		fin>>nr[i].a>>nr[i].b>>nr[i].d;
		v[nr[i].a]=cmmmc(v[nr[i].a],nr[i].d);
		v[nr[i].b]=cmmmc(v[nr[i].b],nr[i].d);
	}
	if(verif()==0)
		fout<<"-1";
	else
	{
		for(i=1;i<=n;i++)
			fout<<v[i]<<" ";
		fout<<"\n";
	}
	return 0;
}
int cmmdc(int a,int b)
{
    int rest;
	while(a%b)
	{
		rest=a%b;
		a=b;
		b=rest;
	}
	return b;
}
int verif()
{
	int i;
	for(i=1;i<=m;i++)
		if(cmmdc(v[nr[i].a],v[nr[i].b])!=nr[i].d)
			return 0;
	return 1;
}
int cmmmc(int a,int b)
{
	return ((long long)a*b/cmmdc(a,b));
}