Algo-Trian
This commit is contained in:
42
Algorithm/DP-DynamicProgramming/P1807 最长路.cpp
Normal file
42
Algorithm/DP-DynamicProgramming/P1807 最长路.cpp
Normal file
@@ -0,0 +1,42 @@
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
using namespace std;
|
||||
|
||||
const int NEG_INF = -1e9;
|
||||
|
||||
int main() {
|
||||
int v, e;
|
||||
cin >> v >> e;
|
||||
|
||||
vector<vector<int>> dp(v, vector<int>(v, NEG_INF));
|
||||
for (int i = 0; i < v; i++) dp[i][i] = 0; // <20>Ի<EFBFBD>=0
|
||||
|
||||
for (int i = 0; i < e; i++) {
|
||||
int a, b, w;
|
||||
cin >> a >> b >> w;
|
||||
dp[a - 1][b - 1] = max(dp[a - 1][b - 1], w); // <20><><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD>ߣ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
||||
}
|
||||
|
||||
for (int k = 0; k < v; k++) {
|
||||
for (int i = 0; i < v; i++) {
|
||||
if (dp[i][k] <= NEG_INF / 2) continue;
|
||||
for (int j = 0; j < v; j++) {
|
||||
if (dp[k][j] <= NEG_INF / 2) continue;
|
||||
dp[i][j] = max(dp[i][j], dp[i][k] + dp[k][j]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int mx = -1;
|
||||
for (int i = 0; i < v; i++) {
|
||||
for (int j = 0; j < v; j++) {
|
||||
if (dp[i][j] > NEG_INF / 2) {
|
||||
mx = max(mx, dp[i][j]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
mx == -1 ? cout << mx << endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user