C++实现SPFA判断负环算法

1、SPFA判断负环算法要求

          给定每条街的拥挤度p(x),街a到街b的时间就是(p(b)-p(a))**3,求第一个点到第k个点的最短路,若无法到达或结果小于3,输出’?’。

2、算法思路

         显然,题目可能存在负环,则所有负环上的点全应该输出’?’ ,因为它们必定小于3,所以,spfa判断负环,并进行标记,即可解决。

3、代码实现

 

#include
#include
#include
#include
#include
#include
#include
using namespace std;

const int N = 209;
const int MAX = 0x3f3f3f3f;
int dis[N];
int p[N];
int h[N];
int cnt[N];
bool vis[N];
bool r[N];
int c[N];

struct Node
{
    int u, v, w, next;
}e[N*N];

void dfs(int x)
{
    r[x] = 1;
    for(int i=h[x]; i!=-1; i=

你可能感兴趣的:(C++入门及项目实战宝典,数据结构和算法实战宝典,SPFA判断负环算法)