Cod sursa(job #2493648)

Utilizator Teodor94Teodor Plop Teodor94 Data 16 noiembrie 2019 17:35:08
Problema Oz Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <stdio.h>
#include <stdlib.h>

FILE *fin , *fout;

long long v[10000],cc[100000];
int aa[100000],bb[100000];

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

int main() {
    fin=fopen("oz.in","r");
    fout=fopen("oz.out","w");
    int n,m,i,f;
    long long a,b,c;
    fscanf(fin,"%d%d",&n,&m);

    for(i=0;i<n;i++)
      v[i]=1;

    for(i=0;i<m;i++) {
      fscanf(fin,"%lld%lld%lld",&a,&b,&c);
      a--;
      b--;
      aa[i]=a;
      bb[i]=b;
      cc[i]=c;
      v[a]*=(c/cmmdc(v[a] , c));
      v[b]*=(c/cmmdc(v[b] , c));
    }

    i=0;
    f=0;
    while(i<m && f==0) {
        if(cmmdc(v[aa[i]] , v[bb[i]])!=cc[i]) {
            f=1;
        }
        i++;
    }

    if(f==1) {
        fprintf(fout,"-1\n");
    }
    else {
        for(i=0;i<n;i++) {
            fprintf(fout,"%lld ",v[i]);
        }
        fprintf(fout,"\n");
    }
    fclose(fin);
    fclose(fout);
    return 0;
}