Cod sursa(job #2076879)

Utilizator osiaccrCristian Osiac osiaccr Data 27 noiembrie 2017 12:18:40
Problema Oz Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <fstream>
#define DEF 10010
#define INF 2000001

using namespace std;

ifstream fin ("oz.in");
ofstream fout ("oz.out");

int v[DEF], a[10*DEF][3], n, m;

int cmmdc (int a, int b) {
  if (!b)
    return a;
  return cmmdc (b, a % b);
}

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

int main () {
    fin >> n >> m;
    for (int i = 1; i <= m; ++ i) {
      fin >> a[i][1] >> a[i][2] >> a[i][0];
      if (v[a[i][1]] == 0) {
        v[a[i][1]] = 1;
      }
      if (v[a[i][2]] == 0) {
        v[a[i][2]] = 1;
      }

      long long x;
      x = cmmmc (v[a[i][1]], a[i][0]);
      if (x < INF)
        v[a[i][1]] = x;
      else {
        fout << "-1";
        return 0;
      }
      x = cmmmc (v[a[i][2]], a[i][0]);
      if (x < INF)
        v[a[i][2]] = x;
      else {
        fout << "-1";
        return 0;
      }

    }

    for (int i = 1; i <= m; ++ i) {
      if (cmmdc (v[a[i][1]], v[a[i][2]]) != a[i][0]) {
        fout << "-1";
        return 0;
      }
    }

    for (int i = 1; i <= n; ++ i)
      fout << v[i] << " ";

    return 0;
}