Cod sursa(job #400904)

Utilizator KoniacDocea Andrei Koniac Data 22 februarie 2010 10:06:12
Problema Oz Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include<stdio.h>
int t,a,y,r,x,nr1,nr2,nr3,n,m,ok;
int v[100001],i[100001],j[100001],d[100001];
int main(){
	FILE * f = fopen("oz.in","r");
	FILE * g = fopen("oz.out","w");
	fscanf(f,"%d %d",&n,&m);
	for(t=1;t<=n;t++){
		v[t]=1;
	}
	for(t=1;t<=m;t++){
		fscanf(f,"%d%d%d",&i[t],&j[t],&d[t]);
		nr1=i[t];
		nr2=j[t];
		nr3=d[t];
		x=v[nr1];
		y=nr3;
		while(y!=0){
			r=x%y;
			x=y;
			y=r;
		}
		v[nr1]*=(nr3/x);
		y=v[nr2];
		x=d[t];
		while(y!=0){
			r=x%y;
			x=y;
			y=r;
		}
		v[nr2]*=(nr3/x);
	}
	for(t=1;t<=m;t++){
		x=v[i[t]];
		y=v[j[t]];
		while(y!=0){
			r=x%y;
			x=y;
			y=r;
		}
		if(x!=d[t]){
			ok=1;
			break;
		}
	}
	if(ok==0){
		for(t=1;t<=n;t++){
			fprintf(g,"%d ",v[t]);
		}
	}
	else
		fprintf(g,"-1");
	
	fclose(f);
	fclose(g);
	return 0;
}