题目链接:https://vjudge.net/problem/POJ-3259
Bellman Ford可以用来判断图中是否存在负环。首先,将所有点的dis设为零,执行n次松弛操作,若第n次仍有点被更新,则图中存在负环。
bool negative_loop(int n)
{
memset(dis, 0, sizeof dis);
for(int i = 0; i < n; i++) {
for(int j = 0; j < edges.size(); j++) {
Edge e = edges[j];
if(dis[e.to] > dis[e.from] + e.cost) {
dis[e.to] = dis[e.from] + e.cost;
if(i == n-1) return true;
}
}
}
return false;
}