Cod sursa(job #518267)

Utilizator ioanabIoana Bica ioanab Data 30 decembrie 2010 22:36:25
Problema Oz Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include<fstream>
using namespace std;

ifstream in("oz.in");
ofstream out("oz.out");

int i,n,m,x,y,d,ok;
int v1[100002], v2[100002], vd[100002];
long long a[10002];


long long cmmdc(long long a, long long b)
{
	long long r;
	r=a%b;
	while (r!=0)
	{
		a=b;
		b=r;
		r=a%b;
	}
	return b;
}

long long cmmmc(long long a, long long b)
{
	return (a*b)/cmmdc(a,b);
}

int main()
{	
	in>>n>>m;
	for(i=1;i<=n;++i)
		a[i]=1;
	ok=1;
	for(i=1;i<=m;++i)
	{
		in>>x>>y>>d;
		v1[i]=x;
		v2[i]=y;
		vd[i]=d;
		a[x]=cmmmc(a[x],d);
		a[y]=cmmmc(a[y],d);
	}
	
	for (i=1; i<=n; ++i)
		if (a[i]>2000000000)
		{
			ok=-1;
			break;
		}
	if(ok==1)
		for (i=1; i<=m; ++i)
			if ( cmmdc(a[v1[i]], a[v2[i]])!=vd[i] ) 
			{
				ok=-1;
				break;
			}
	
	if (ok==1)
	{
		out<<a[1];
		for(i=2; i<=n; ++i) 
			out<<" "<<a[i];
		out<<"\n";
	}
	else 
		out<<"-1\n";
	
	return 0;
}