제출 #989060

#제출 시각아이디문제언어결과실행 시간메모리
989060Tsagana여행하는 상인 (APIO17_merchant)C++14
100 / 100
52 ms4316 KiB
#include<bits/stdc++.h> #define IOS ios_base::sync_with_stdio(false);cin.tie();cout.tie(); #define alnl(x) x.begin(), x.end() #define lnl long long #define pq priority_queue #define eb emplace_back #define lb lower_bound #define ub upper_bound #define pb push_back #define pp pop_back #define F first #define S second using namespace std; int N, M, K; lnl B[105][1005]; lnl S[105][1005]; lnl mat[105][105]; lnl mindis[105][105]; lnl profit[105][105]; bool check(lnl x) { for (int i = 1; i <= N; i++) for (int j = 1; j <= N; j++) { if (mindis[i][j] == 1e13 || i == j) mat[i][j] = -1e13; else mat[i][j] = profit[i][j] - (x * mindis[i][j]); } for (int k = 1; k <= N; k++) for (int i = 1; i <= N; i++) for (int j = 1; j <= N; j++) { mat[i][j] = max(mat[i][j], mat[i][k] + mat[k][j]); } for (int i = 1; i <= N; i++) { if (mat[i][i] >= 0) return 1; } return 0; } void solve () { cin >> N >> M >> K; for (int i = 1; i <= N; i++) for (int j = 1; j <= K; j++) cin >> B[i][j] >> S[i][j]; for (int i = 1; i <= N; i++) { for (int j = 1; j <= N; j++) mindis[i][j] = 1e13; mindis[i][i] = 0; } while (M--) { int u, v; lnl w; cin >> u >> v >> w; mindis[u][v] = w; } for (int k = 1; k <= N; k++) for (int i = 1; i <= N; i++) for (int j = 1; j <= N; j++) { mindis[i][j] = min(mindis[i][j], mindis[i][k] + mindis[k][j]); } for (int i = 1; i <= N; i++) for (int j = 1; j <= N; j++) { if (i == j) continue; profit[i][j] = 0; for (int k = 1; k <= K; k++) { if (B[i][k] == -1 || S[j][k] == -1) continue; profit[i][j] = max(profit[i][j], S[j][k] - B[i][k]); } } lnl l = 0, r = 1e9; while (l < r) { lnl m = (l + r + 1) / 2; if (check(m)) l = m; else r = m - 1; } cout << l; } int main() {IOS solve(); return 0;}

컴파일 시 표준 에러 (stderr) 메시지

merchant.cpp: In function 'void solve()':
merchant.cpp:48:5: warning: this 'for' clause does not guard... [-Wmisleading-indentation]
   48 |     for (int j = 1; j <= N; j++)
      |     ^~~
merchant.cpp:50:9: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for'
   50 |         mindis[i][i] = 0;
      |         ^~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...