int flag=0;
int dis[N]={};
int vis[N]={};
void Clr(){
memset(dis,0,sizeof(dis));
memset(vis,0,sizeof(vis));
memset(first,0,sizeof(first));
cnt=1;
flag=0;
}
void SPFA(int u){
vis[u]=1;
for(int i=first[u];i;i=e[i].nxt){
int v=e[i].v;
if(dis[u]+e[i].w<dis[v]){
if(vis[v]||flag){
flag=1;
break;
}
dis[v]=dis[u]+e[i].w;
SPFA(v);
}
}
vis[u]=0;
}
//
for(int i=1;i<=n;i++){
SPFA(i);
if(flag)break;
}模板SPFA-DFS判断负环
最新推荐文章于 2025-07-28 14:12:05 发布
本文介绍了一种基于最短路径快速搜索算法(SPFA)的实现方法。该算法用于寻找图中从源点到其它各点的最短路径,并能够检测负权环的存在。通过遍历每个节点作为起点调用SPFA算法,可以确保找到所有可能的最短路径。如果在遍历过程中发现存在负权环,则算法会提前终止。

3万+





