Cod sursa(job #480531)

Utilizator S7012MYPetru Trimbitas S7012MY Data 28 august 2010 12:43:03
Problema Oz Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <cstdio>
#define DN 10005

int i,a,b,c;
long long n,m,sir[DN];

long long cmmdc(long long a, long long b) {
    long long c;
    for (;b;c=a%b,a=b,b=c);
    return a;
}

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

bool check() {
    FILE *f=fopen("oz.in","r");
    fscanf(f,"%d %d",&n,&m);
    for(i=1; i<=m; ++i) {
        fscanf(f,"%d %d %d",&a,&b,&c);
        if(cmmdc(sir[a],sir[b])!=c) return false;
    }
    return true;
}

int main()
{
    freopen("oz.in","r",stdin);
    freopen("oz.out","w",stdout);
    scanf("%lld %lld",&n,&m);
    for(i=1; i<=n; ++i) sir[i]=1;
    for (i=1; i<=m; ++i) {
        scanf("%d %d %d",&a,&b,&c);
        sir[a]=cmmmc(sir[a],c);
        sir[b]=cmmmc(sir[b],c);
    }
    if(!check()) printf("-1");
    else for(i=1; i<=n ; ++i) printf("%d ",sir[i]);
    return 0;
}