Algo-Trian

This commit is contained in:
e2hang
2025-09-21 12:21:50 +08:00
parent 24522486f1
commit 3bde00039c
25 changed files with 842 additions and 0 deletions

View 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;
}