Cod sursa(job #1013298)

Utilizator rughibemBelcineanu Alexandru Ioan rughibem Data 20 octombrie 2013 19:22:00
Problema Oz Scor 55
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include<stdio.h>
FILE *f=fopen("oz.in","r"), *g=fopen("oz.out","w");

long int n, m, v[10004], x[100004], y[100004], z[100004], ok, q;

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

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

void initializare(){
long int i;
    for(i=1;i<=n;i++){
        v[i]=1;
    }
}

int main(){

    fscanf(f,"%ld %ld\n",&n,&m);
    initializare();
    for(long int i=1;i<=m;i++){
        fscanf(f,"%ld %ld %ld\n",&x[i],&y[i],&z[i]);
        v[x[i]]=cmmmc(v[x[i]],z[i]);
        v[y[i]]=cmmmc(v[y[i]],z[i]);
    }
    ok=1;
    for(long int i=1;i<=m;i++){
        q= cmmdc(v[x[i]],v[y[i]]);
        if(q!=z[i]){ok=-1;break;}
    }
    if(ok==-1){fprintf(g,"%ld\n",-1);}
    else{for(long int i=1;i<=n;i++){fprintf(g,"%ld ",v[i]);}}

return 0;
}