Cod sursa(job #2666255)

Utilizator Remus.RughinisRemus Rughinis Remus.Rughinis Data 1 noiembrie 2020 12:14:04
Problema Oz Scor 55
Compilator c-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <stdio.h>
#include <stdlib.h>

int cmmdc(int a, int b){
  int r;
  while(b>0){
    r=b;
    b=a%b;
    a=r;
  }
  return a;
}
int v[10000],a[100000],b[100000],d[100000];
int main(){
  int n,m,i,j;
  FILE *fin, *fout;
  fin=fopen("oz.in","r");
  fscanf(fin,"%d%d",&n,&m);
  for(i=0;i<n;i++)
    v[i]=1;

  for(i=0;i<m;i++){
    fscanf(fin,"%d%d%d",&a[i],&b[i],&d[i]);
    a[i]--;
    b[i]--;
    if(v[a[i]]%d[i]!=0)
      v[a[i]]=d[i]*v[a[i]]/cmmdc(v[a[i]],d[i]);
    if(v[b[i]]%d[i]!=0)
      v[b[i]]=d[i]*v[b[i]]/cmmdc(v[b[i]],d[i]);
  }
  fclose(fin);

  i=0;
  while(i<m&&cmmdc(v[a[i]],v[b[i]])==d[i])
    i++;

  fout=fopen("oz.out","w");
  if(i==m){
    for(i=0;i<n;i++)
      fprintf(fout,"%d ",v[i]);
    fprintf(fout,"\n");
  } else
    fprintf(fout,"-1\n");
  fclose(fout);
  return 0;
}