Cod sursa(job #167818)

Utilizator andumMorie Daniel Alexandru andum Data 30 martie 2008 11:03:42
Problema Oz Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
# include <stdio.h>

FILE *f,*g;

long long x,y,a[100001][4];
long n,m,i,j,v[10001];
int ok;

long long cmmdc(long long a,long long b)
{
 long long r=0;
 r=a%b;
 while (r!=0)
	{
	 a=b;
	 b=r;
	 r=a%b;
	}
 return b;
}

long long cmmmc(long long a,long long b)
{
 long long q;
 q=(a*b)/cmmdc(a,b);
 return q;
}

int main()
{

 f=fopen("oz.in","r");
 g=fopen("oz.out","w");

 fscanf(f,"%ld %ld",&n,&m);
 for (i=1;i<=n;i++)
	v[i]=1;
 ok=1;
 for (i=1;i<=m;i++)
	{
	 fscanf(f,"%lld %lld %lld", &a[i][1], &a[i][2], &a[i][3]);
	 x=cmmmc(v[a[i][1]],a[i][3]);
	 y=cmmmc(v[a[i][2]],a[i][3]);
	 if (x>2000000000 || y>2000000000) {
					ok=0;
					break;
				     }
			     else {
			      v[a[i][1]]=x;
			      v[a[i][2]]=y;
			     }
	}
 fclose(f);
 if (!ok) fprintf(g,"-1");
	else
 {
  for (i=1;i<=m;i++)
	{
	 if (cmmdc(v[a[i][1]],v[a[i][2]])!=a[i][3])
			{
			 ok=0;
			 break;
			}
	}
  if (ok)
  for (i=1;i<=n;i++)
	fprintf(g,"%ld ", v[i]);
   else
	fprintf(g,"-1");
 }
 fclose(g);
 return 0;
}