Cod sursa(job #244376)

Utilizator ooctavTuchila Octavian ooctav Data 14 ianuarie 2009 22:22:45
Problema Oz Scor 55
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
// oz.cpp : Defines the entry point for the console application.
//

#include <stdio.h>
int e[10004];
int main()
{
	int a,b,c,i,j,m,n,r,f;
	bool g=true;
	FILE *f1,*f2;
	f1=fopen("oz.in","r");
	f2=fopen("oz.out","w");
	fscanf(f1,"%d %d",&n,&m);
	for(i=1;i<=n;i++)
		e[i]=1;
	for(i=1;i<=m;i++)
	{
		fscanf(f1,"%d %d %d",&a,&b,&c);
		j=e[a];
		f=c;
		while(f)
		{
			r=j%f;
			j=f;
			f=r;
			if(j==1)	break;
		}
		e[a]=e[a]*c/j;
		j=e[b];
		f=c;
		while(f)
		{
			r=j%f;
			j=f;
			f=r;
			if(j==1)	break;
		}
		e[b]=e[b]*c/j;
	}
	fclose(f1);
	f1=fopen("oz.in","r");
	fscanf(f1,"%d %d",&n,&m);
	int o,p,r2;
	for(i=1;i<=m;i++)
	{
		fscanf(f1,"%d %d %d",&a,&b,&c);
		o=e[a];
		p=e[b];
		while(p)
		{
			r2=o%p;
			o=p;
			p=r2;
			if(o==1)	break;
		}
		if(o!=c)	
		{
			fprintf(f2,"-1");
			g=false;
			break;
		}
	}
	for(i=1;i<=n;i++)
		if(e[i]>=2000000000)
		{
			fprintf(f2,"-1");
			g=false;
			break;
		}
	if(g)
		for(i=1;i<=n;i++)
			fprintf(f2,"%d ",e[i]);
	fclose(f1);
	fclose(f2);
	return 0;
}