Cod sursa(job #169602)

Utilizator stefynr8Space Monkey stefynr8 Data 1 aprilie 2008 20:17:07
Problema Oz Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <stdio.h>


long long m,n,i,j,d,h,v[10001],ok;

long long x,y;
FILE *f1,*f2;

long long cmmdc(long long a, long long b)
{
  long long r;
  do{
   r=a%b;
   a=b;
   b=r;
  }while (r!=0);
  return a;
}
long long cmmmc(long long a, long long b)
{
  return a*b/cmmdc(a,b);
}
int main()

{
 long long a[100001][3];
 f1=fopen("oz.in","r");
 f2=fopen("oz.out","w");


 fscanf(f1,"%lld",&n);
 fscanf(f1,"%lld",&m);

 for(h=1;h<=n;h++)
    {
     v[h]=1;
     }

 ok=1;
 for(h=1;h<=m;h++)
    {
     fscanf(f1,"%lld",&i);
     fscanf(f1,"%lld",&j);
     fscanf(f1,"%lld",&d);
     a[h][0]=i;
     a[h][1]=j;
     a[h][2]=d;

     // cmmmc
     x=cmmmc(v[i],d);
     y=cmmmc(v[j],d);
     if (x>2000000000 || y>2000000000) {
      ok=0; break;
	 }
	 else { v[i]=x; v[j]=y;
	 }
     }


 fclose(f1);

 if (ok) {
   for (h=1;h<=m;h++)
     if (cmmdc(v[a[h][0]],v[a[h][1]])!=a[h][2]) {
       ok=0;
       break;
     }
 }
 if (!ok) fprintf(f2,"-1");
  else for(h=1;h<=n;h++)
	  {
	   fprintf(f2,"%lld ",v[h]);
	   }

 fclose(f2);
 return 0;
}