最短路算法之SPFA算法

目标算法:SPFA算法

应用范围:最短路

 

算法代码:

#include
using namespace std;

const int maxn = 205;
vector >E[maxn];

int n,m;
int dis[maxn],vis[maxn];
void init()
{
    for(int i=0;i>n>>m)
    {
        init();
        for(int i=0;iQ;
        Q.push(s);
        dis[s] = 0,vis[s] = 1;
        while(!Q.empty())
        {
            int now = Q.front();
            Q.pop();vis[now] = 0;
            for(int i=0;i dis[now] + E[now][i].second)
                {
                    dis[v] = dis[now] + E[now][i].second;
                    if(vis[v] == 1) continue;
                    vis[v] = 0;
                    Q.push(v);
                }
            }
        }
        if(dis[t] == 1e9) printf("-1\n");
        else printf("%d\n",dis[t]);
    }
}

你可能感兴趣的:(算法(C++))