Cod sursa(job #244661)

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

#include <stdio.h>
int e[10004];
int main()
{
	long long 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,"%lld %lld",&n,&m);
	for(i=1;i<=n;i++)
		e[i]=1;
	for(i=1;i<=m;i++)
	{
		fscanf(f1,"%lld %lld %lld",&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,"%lld %lld",&n,&m);
	int o,p,r2;
	for(i=1;i<=m;i++)
	{
		fscanf(f1,"%lld %lld %lld",&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;
		}
	}
	if(g)
		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;
}