Cod sursa(job #190055)

Utilizator andrei-alphaAndrei-Bogdan Antonescu andrei-alpha Data 19 mai 2008 20:30:41
Problema Oz Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <stdio.h>
#define Mmax 200001
#define Nmax 20001

#define IN  "oz.in"
#define OUT "oz.out"

int n,m;
int v[Nmax];
struct pers{int ii,jj,dd;};
pers per[Mmax];

int cmmdc (int x,int y)
{  
    if(!y) 
		return x;  
    return cmmdc(y,x%y);  
}   

int cmmmc(int x,int y)
{
	int cd=cmmdc(x,y);
	return x*(y/cd);
}	
void scan()
{
	freopen(IN, "r",stdin);
	freopen(OUT, "w",stdout);
	scanf("%d%d", &n,&m);
	for(int k=1;k<=n;++k)
		v[k]=1;
	for(int k=1;k<=m;++k)
	{
		scanf("%d%d%d", &per[k].ii,&per[k].jj,&per[k].dd);
		v[per[k].ii]=cmmmc(v[per[k].ii],per[k].dd);
		v[per[k].jj]=cmmmc(v[per[k].jj],per[k].dd);
	}	
}

void check()
{
	for(int k=1;k<=m;++k)
		if( cmmdc(v[per[k].ii],v[per[k].jj]) != per[k].dd )
		{
			printf("-1\n");
			return;
		}
	for(int i=1;i<=n;++i)
		printf("%d ",v[i]);
}

int main()
{
	scan();
	check();
	return 0;
}