Bellman-Ford
#include<bits/stdc++.h>
using namespace std;
// INF 表示无穷大
const int INF = 0x7f;
// 定义边类
class Edge {
public:
int u; // 边的起点
int v; // 边的终点
int w; // 边的权值
Edge() {
}
};
int n; // 结点个数
int m; // 边数
int u; // 开始点
int v; // 结束点
int w; // 权值
vector<Edge*> elist; // 边集合
vector<int> dist; // 路径距离集合
vector<int> path;
// 单源最短路径(负权边)
bool bellman_ford(int u) {
dist.resize(n, INF);
dist[u] = 0; // 源点到自己距离为 0
path.resize(n, -1);
// 执行 n - 1 次
for (int i = 1