Cod sursa(job #1990971)

Utilizator DruffbaumPopescu Vlad Druffbaum Data 14 iunie 2017 14:14:48
Problema Distante Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <cstdio>

const int MAXN = 5e4;

int dist[MAXN + 1];

int main() {
  int t, n, m, s, x, y, c;
  bool check;
  FILE *fin = fopen("distante.in", "r");
  fscanf(fin, "%d", &t);
  FILE *fout = fopen("distante.out", "w");
  for (; t > 0; --t) {
    fscanf(fin, "%d%d%d", &n, &m, &s);
    check = 0;
    for (int i = 1; i <= n; ++i) {
      fscanf(fin, "%d", &dist[i]);
    }
    for (int i = 0; i < m; ++i) {
      fscanf(fin, "%d%d%d", &x, &y, &c);
      if ((dist[x] + c < dist[y]) || (dist[y] + c < dist[x])) {
        check = 1;
      }
    }
    if (dist[s]) {
      check = 1;
    }
    if (!check) {
      fprintf(fout, "DA\n");
    } else {
      fprintf(fout, "NU\n");
    }
  }
  fclose(fin);
  fclose(fout);
  return 0;
}