BF能否直接跑最长路?
  • 板块P1807 最长路
  • 楼主KANO07
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/9/9 14:08
  • 上次更新2024/9/9 20:13:38
查看原帖
BF能否直接跑最长路?
1048327
KANO07楼主2024/9/9 14:08

没有把边转为负权,ac了。

个人感觉经过了nm次的更新,好像已经把所有可能包括了?

如果bf可以的话,那不知道spfa是否也可以?

#include <bits/stdc++.h>
#define endl '\n'
using namespace std;
using ll = long long;
using pll = pair<ll, ll>;
const int N = 1e5 + 5;
const int M = 1e5 + 5;
int n, m, cnt;
struct node {
    int u, v, w;
} e[M];
int d[N];
void bf() {
    for (int i = 2; i <= n; i++) d[i] = -1e9;
    for (int k = 1; k <= n; k++) {
        for (int i = 0; i < cnt; i++) {
            int x = e[i].u;
            int y = e[i].v;
            if (d[x] < d[y] + e[i].w) {
                d[x] = d[y] + e[i].w;
            }
        }
    }
}

int main() {
    cin >> n >> m;
    while (m--) {
        int u, v, w;
        cin >> u >> v >> w;
        e[cnt++] = {v, u, w};
    }
    bf();
    cout << (d[n] == -1e9 ? -1 : d[n]) << endl;
}
2024/9/9 14:08
加载中...