前几天自己学了一下Bellman-Ford算法,深有感触。本来想自己掌握dijkstra算法和Floyd算法就行了,最近遇到一道判断负环的题目,所以还是赶紧自学了一下Bellman-Ford算法。
下面直接上判断负环的代码
int Bellman_ford(){
int i,j;
for(i=1;i<=n;i++) dis[i]=INF;
dis[1]=0;
for(i=1;i<=n;i++){
int flag=0;
for(j=0;j<cnt;j++) if(dis[edge[j].v]>dis[edge[j].u]+edge[j].cap){ dis[edge[j].v]=dis[edge[j].u]+edge[j].cap; flag=1; }
if(!flag) break; }
return i==n+1;
}