Ranking (as of 2015-08-07): 8 out of 483
Language: C++
/* UVa 10350 - Liftless EME To build using Visual Studio 2012: cl -EHsc -O2 UVa_10350_Liftless_EME.cpp */ #include <algorithm> #include <limits> #include <cstdio> using namespace std; const int nr_chars_max = 12, n_max = 120, m_max = 15, ladder = 2; int times[n_max][m_max][m_max]; // times[i][j][k] is the time from the i-th floor's j-th hole // to the (i + 1)-th floor's k-th hole int min_times[n_max][m_max]; // min_times[i][j] is the min. time needed to reach i-th floor's j-th hole int main() { char s[nr_chars_max + 1]; while (scanf("%s", s) != EOF) { int n, m; scanf("%d %d", &n, &m); for (int i = 0; i < n - 1; i++) for (int j = 0; j < m; j++) for (int k = 0; k < m; k++) scanf("%d", ×[i][j][k]); for (int j = 0; j < m; j++) min_times[0][j] = 0; for (int i = 1; i < n; i++) for (int j = 0; j < m; j++) { int min_t = numeric_limits<int>::max(); for (int k = 0; k < m; k++) min_t = min(min_t, min_times[i - 1][k] + times[i - 1][k][j]); min_times[i][j] = min_t; } int min_t = numeric_limits<int>::max(); for (int j = 0; j < m; j++) min_t = min(min_t, min_times[n - 1][j]); min_t += ladder * (n - 1); printf("%s\n%d\n", s, min_t); } return 0; }
No comments:
Post a Comment