Cod sursa(job #236902)

Utilizator jupanubv92Popescu Marius jupanubv92 Data 28 decembrie 2008 18:23:44
Problema Oz Scor 55
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include<stdio.h>

int n,m;
int sol[10001];

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

dat sir[100001];

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

int cmmmc(int a,int 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 %d",&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("%d ",sol[i]);
     else printf("-1");
    return 0;
}