Cod sursa(job #521365)

Utilizator Adrian1997Radulescu Adrian Adrian1997 Data 12 ianuarie 2011 10:46:02
Problema Oz Scor 25
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <stdio.h>
FILE *f=fopen("oz.in","r");
FILE *g=fopen("oz.out","w");
int n,m,v[10001];

int div(int a,int b){
	int register a1=a,b1=b,r;
	r=a1%b1;
	while(r!=0){
		a1=b1;
		b1=r;
		r=a1%b1;
	}
	a/=b1;
	return a;
}

int main(void){
	int register i,j;
	
	fscanf(f,"%d %d",&n,&m);
	int register nr=n,x,y,d;
	for(i=1;i<=m;i++){
		fscanf(f,"%d %d %d",&x,&y,&d);
		if(v[x]==0){
			v[x]=d;
			nr--;
		}	
		else{
			v[x]*=div(d,v[x]);
			if(v[x]>2000000000){
				fprintf(g,"-1");
				return 0;
			}
		}
		if(v[y]==0){
			v[y]=d;
			nr--;
		}
		else{
			v[y]*=div(d,v[y]);
			if(v[y]>2000000000){
				fprintf(g,"-1");
				return 0;
			}
		}
	}
	if(nr!=0){
		fprintf(g,"-1");
		return 0;
	}
	for(i=1;i<=n;i++){
		fprintf(g,"%d ",v[i]);
	}
	return 0;
}