int spfa()
{
int vis[N];
int dis[N];
memset(vis,0,sizeof(vis));
for(int i=1;i<=n;i++)
dis[i]=inf;
queue<int>myqueue;
while(!myqueue.empty())myqueue.pop();
vis[1]=1;
dis[1]=0;
myqueue.push(1);
while(!myqueue.empty())
{
int top=myqueue.front();
vis[top]=0;
myqueue.pop();
for(int i=0;i<edge[top].size();i++)
{
int v=edge[top][i].v;
int len=edge[top][i].len;
if(dis[v]>dis[top]+len)
{
dis[v]=dis[top]+len;
if(!vis[v])
{
vis[v]=1;
myqueue.push(v);
}
}
}
}
return dis[n];
} SPFA
最新推荐文章于 2025-07-31 16:18:35 发布
本文介绍了一种改进的最短路径算法——SPFA(Shortest Path Faster Algorithm)。通过使用队列和顶点标记来优化传统的 Bellman-Ford 算法,SPFA 能够更高效地求解带负权边的最短路径问题。文章通过具体的 C++ 代码实现展示了 SPFA 的工作原理。
1383

被折叠的 条评论
为什么被折叠?



