43 lines
981 B
C++
43 lines
981 B
C++
#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; // 自环=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); // 可能多条边,取最大
|
|
}
|
|
|
|
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;
|
|
}
|
|
|