Cod sursa(job #211634)

Utilizator nusmaibunkeleviprofesor cicalescu nusmaibunkelevi Data 3 octombrie 2008 00:29:13
Problema Oz Scor 75
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include<stdio.h>
#define NMAX 10000
#define MMAX 100000
#define MAX 2000000000L
struct trip{int x,y,z;};

int cmmdc(int a,int b){
int r=a%b;
while(r){
	a=b;b=r;r=a%b;
	}
return b;
}
int main(){
freopen("oz.in","r",stdin);
freopen("oz.out","w",stdout);
int n,m,f1,f2,dc,ok=1;
int i,j,v[NMAX+1];
trip w[MMAX+1];
scanf("%d%d",&n,&m);
for(i=1;i<=n;++i) v[i]=1;
for(j=1;j<=m;++j)
	scanf("%d%d%d",&w[j].x,&w[j].y,&w[j].z);
for(j=1;j<=m&&ok;++j){
	dc=cmmdc(v[w[j].x],w[j].z);
	f1=w[j].z/dc;v[w[j].x]*=f1;
	if(v[w[j].x]>MAX||v[w[j].x]<0) ok=0;
	dc=cmmdc(v[w[j].y],w[j].z);
	f2=w[j].z/dc;v[w[j].y]*=f2;
	if(v[w[j].y]>MAX||v[w[j].y]<0) ok=0;
	}
if(ok)
	for(i=1;i<=n;++i) printf("%d ",v[i]);
else printf("-1");
return 0;
}