Cod sursa(job #163699)

Utilizator taloibogdanTaloi Bogdan Cristian taloibogdan Data 22 martie 2008 14:59:19
Problema Oz Scor 25
Compilator cpp Status done
Runda preONI 2008, Runda Finala, Clasele 5-8 Marime 1.26 kb
#include<stdio.h>
long n,m,i,a[10000],b[10000],d[10000],q,v[10000],f,j,vva,vvb;
long cmmmc(long a,long b)
{long long aa;
 aa=a;
 while(aa%b)aa+=a;
 if(aa>2000000000ll)return -1;
             else return aa;
}
long cmmdc(long a,long b)
{long aa,bb,r;
 aa=a;
 bb=b;
 while(bb>0){r=aa%bb;aa=bb;bb=r;}
 return aa;
}
int main()
{
 freopen("oz.in","r",stdin);
 freopen("oz.out","w",stdout);
 scanf("%ld%ld",&n,&m);
 q=0;
 for(i=1;i<=m;++i)
    {
     scanf("%ld%ld%ld",&a[i],&b[i],&d[i]);
     f=0;
     for(j=1;j<i;++j)
        if((a[j]==a[i])&&(b[j]==b[i]))
          if(d[j]!=d[i]) {printf("-1");return 0;}
                    else f=1;
     if(f==0)
     {
      if(!v[a[i]])v[a[i]]=1;
      vva=v[a[i]];
      if(v[a[i]]>d[i])
        v[a[i]]=cmmmc(v[a[i]],d[i]);
                  else
        v[a[i]]=cmmmc(d[i],v[a[i]]);
      if(!v[b[i]])v[b[i]]=1;
      vvb=v[b[i]];
      if(v[b[i]]>d[i])
        v[b[i]]=cmmmc(v[b[i]],d[i]);
                  else
        v[b[i]]=cmmmc(d[i],v[b[i]]);
      if((v[a[i]]==-1)||(v[b[i]]==-1)){printf("-1");return 0;}
      if((cmmdc(v[a[i]],v[b[i]])!=d[i])){printf("-1");return 0;}
     }
    }
 for(i=1;i<=n;++i)
    if(v[i])printf("%ld ",v[i]);
       else printf("1 ");
 printf("\n");
 return 0;

}