spfa 快速最短路-佇列優化,可以用 hdu2544 驗證演算法的正確性
裡面的spfa演算法摘自acdart 的板子。把這個函式記錄在網上,以免忘記。我再理解下。
spfa就是維護乙個佇列,這個佇列中的點可以進行鬆弛操作。2017-8-25再次修改
#define _crt_secure_no_warnings
#include #include #include #include using namespace std;
const int maxn = 1e4 + 7;
struct edge edge[maxn]; //只有這個陣列範圍與邊有關
int head[maxn];//陣列範圍與點數有關
bool vis[maxn];
int dis[maxn];
//int cnt[maxn];
int n, m, tot;
void init()
void add(int u, int v, int w)
bool spfa(int s) */
vis[v] = true;
que.push(v);}}
} }return true;
}int main()
init();
for (int i = 1; i <= m; ++i)
spfa(1);
printf("%d\n", dis[n]);
} return 0;
}
最短路徑快速spfa
include include include using namespace std define inf 0xfffff 因為為了辨別是否有負權,所以inf不能開太大 define max 1100 int dist max pre max path max max bool sign max ...
最短路徑 SPFA演算法優化
首先先明確乙個問題,spfa是什麼?不會看什麼看,一邊學去,傳送門 spfa是bellman ford的佇列優化版本,只有在國內才流行spfa這個名字,大多數人就只知道spfa就是乙個頂尖的高效演算法,卻不知道還能繼續優化,這個優化雖然也沒有你想的那麼麻煩,只不過多了幾個判斷語句罷了,5分鐘就能學會...
最短路(Bellman佇列優化)
include include include define dif 9999 using namespace std queue q struct hahae 100 int book 100 dis 100 分別用來標記頂點是否入隊和源點到每個點的距離 int next 100 first 10...