关于 Bellman-ford算法
· 单源最短路算法
· 可以处理负边权,甚至可以处理有负环的情况
· 对每一条边额外进行一次松弛,如果松弛成功,即 dis[u]+w(u,v)<dis[v] 成立,则图中存在负环路,也就是说该图无法求出单源最短路径
· 适合稀疏图
· 如果有负权回路,短路不一定存在
void bellman_ford() { for(int i=1; i<=n; i++) dis[i]=INF; dis[s]=0; for(int i=1; i<=n; i++)//=n用来判断负环 { for(int j=1; j<m; j++) { if(dis[e[j].u]!=INF && dis[e[j].v]>dis[e[j].u]+e[j].w) { dis[e[j].v]=dis[e[j].u]+e[j].w; if(i==n) return true;//判断负环 } } } return false; }