Cod sursa(job #236878)

Utilizator raica_cristiraica dumitru cristian raica_cristi Data 28 decembrie 2008 17:38:41
Problema Oz Scor 75
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.66 kb
#include<stdio.h>

int check(int a,int b)
{   int c;
    while(a)
    {
            c=b%a;
            b=a;
            a=c;
}
return b;
}
int main ()
{
    freopen("oz.in","r",stdin);
    freopen("oz.out","w",stdout);
    int n,m,i,k,q;
    int   x,b,c;
    scanf("%d%d",&n,&m);
   long long unsigned ve[m+3],ve2[m+3],ve3[m+3];
    long long unsigned a[n+3];
    for(i=0;i<=n+1;i++)
    a[i]=1;
    for(i=1;i<=m;i++)
    {
                     scanf("%d%d%d",&x,&b,&c);
                     q=2;
                     ve[i]=x;
                     ve2[i]=b;
                     ve3[i]=c;
                       a[x]=(a[x]*c)/check(a[x],c);
                       a[b]=(a[b]*c)/check(a[b],c);
                   
                     if(a[x]>2000000000 || a[b]>2000000000)
                     {printf("-1\n");
                     return 0;
                     }
                     }
                   for(i=1;i<=m;i++)
                   {
                                    if(check(a[ve[i]],ve3[i])==0 || check(a[ve2[i]],ve3[i])==0)
                                    {printf("-1\n");
                                    return 0;
                                    }}
                   for(i=1;i<=n;i++)
                   if(a[i]>2000000000)
                   {printf("-1\n");
                                    return 0;
                                    }
                     for(i=1;i<=n;i++)
                     {
                                      if(a[i]>2000000000)
                   {  break;}
                     printf("%d ",a[i]);}
                     return 0;
                     }