제출 #1354077

#제출 시각아이디문제언어결과실행 시간메모리
1354077ramzialoulouTravelling Merchant (APIO17_merchant)C++20
0 / 100
1097 ms86740 KiB
#include <bits/stdc++.h>

using namespace std;

const long long inf = (long long) 1e18;

int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  int n, m, k;
  cin >> n >> m >> k;
  vector<vector<int>> B(n + 1, vector<int>(k + 1)), S = B;
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= k; j++) {
      cin >> B[i][j] >> S[i][j];
    }
  }
  vector<vector<pair<int, int>>> g(n + 1);
  while (m--) {
    int u, v, w;
    cin >> u >> v >> w;
    g[u].emplace_back(v, w);
  }
  long long ans = 0;
  for (int i = 1; i <= n; i++) {
    vector dp(n + 1, vector(k + 1, vector<long long>(n + 2, -inf)));
    dp[i][0][0] = 0;
    for (int j = 1; j <= n; j++) {
      for (int u = 1; u <= n; u++) {
        for (int d = 0; d <= n; d++) {
          for (int K = 1; K <= k; K++) {
            if (dp[u][K][d] == -inf) continue;
            if (S[u][K] != -1) {
              dp[u][0][d] = max(dp[u][0][d], dp[u][K][d] + S[u][K]);
            }
          }
          for (int K = 1; K <= k; K++) {
            if (dp[u][0][d] == -inf) continue;
            if (B[u][K] != -1) {
              dp[u][K][d] = max(dp[u][K][d], dp[u][0][d] - B[u][K]);
            }
          }
          for (auto [v, w] : g[u]) {
            for (int K = 0; K <= k; K++) {
              if (dp[u][K][d] != -inf) {
                dp[v][K][d + 1] = dp[u][K][d];
              }
              if (K == 0) continue;
              if (B[u][K] != -1 && dp[u][0][d] != -inf) {
                dp[v][K][d + 1] = max(dp[v][K][d + 1], dp[u][0][d] - B[u][K]);
              }
              if (S[u][K] != -1 && dp[u][K][d] != -inf) {
                dp[v][0][d + 1] = max(dp[v][0][d + 1], dp[u][K][d] + S[u][K]);
              }
            }
          }
        }
      }
    }
    for (int d = 1; d <= n; d++) {
      ans = max(ans, dp[i][0][d] / d);
    }
  }
  cout << ans << '\n';
  return 0;
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…