Cod sursa(job #2486324)

Utilizator DunareanuDinu Dunareanu Dunareanu Data 2 noiembrie 2019 18:04:50
Problema Oz Scor 5
Compilator c-64 Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <stdio.h>
#include <stdlib.h>

FILE *fin , *fout;

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

int cmmdc(int a, int b) {
  int 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,a,b,c,f;
    fscanf(fin,"%d%d",&n,&m);

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

    i=0;
    f=0;
    while(i<m && f==0) {
        if(cmmdc(v[aa[i]-1] , v[bb[i]-1])!=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;
}