Cod sursa(job #236903)

Utilizator jupanubv92Popescu Marius jupanubv92 Data 28 decembrie 2008 18:26:22
Problema Oz Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include<stdio.h>

int n,m;
long long sol[10001];

struct dat{
  int x;
  int y;
  long long d;
};

dat sir[100001];

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

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

void citire()
{
    scanf("%d %d",&m,&n);
    for(int i=1;i<=m;i++)
      sol[i]=1;
    for(int i=1;i<=n;i++)
     {
       scanf("%d %d %lld",&sir[i].x,&sir[i].y,&sir[i].d);
       sol[sir[i].x]=cmmmc(sol[sir[i].x],sir[i].d);
       sol[sir[i].y]=cmmmc(sol[sir[i].y],sir[i].d);
     }
}

int verif()
{
    for(int i=1;i<=n;i++)
     {
      if(cmmdc(sol[sir[i].x],sol[sir[i].y])!=sir[i].d)
        return 0;
     }
    return 1;
}

int main()
{
    freopen("oz.in","r",stdin);
    freopen("oz.out","w",stdout);
    citire();
    if(verif())
     for(int i=1;i<=m;i++)
      printf("%lld ",sol[i]);
     else printf("-1");
    return 0;
}