目錄
spfa的演算法思想(動態逼近法):
設立乙個先進先出的佇列q用來儲存待優化的結點,優化時每次取出隊首結點u,並且用u點當前的最短路徑估計值對離開u點所指向的結點v進行鬆弛操作,如果v點的最短路徑估計值有所調整,且v點不在當前的佇列中,就將v點放入隊尾。這樣不斷從佇列中取出結點來進行鬆弛操作,直至佇列空為止。
poj 2387 til the cows come home
題目大意:裸的最短路,只不過是倒過來
#include #include #include #include #define maxn 2005
#define inf 0x3f3f3f
using namespace std;
vector> e[maxn];//不定長pair陣列的大小為maxn的陣列
queueq;//要計算的佇列
int d[maxn];//某點到目標點的距離
int inq[maxn];//某點是否在要計算的佇列中
int t, n;//t 條邊,n個點
void init()
void spfa()}}
}int main()
spfa();
cout << d[0];//d[x] x為終點
}
最短路徑 POJ 2387
題目點這裡 給乙個無向圖,首先輸入兩個整數t和n,t 表示邊的數目,n表示頂點數目。接下來輸入 t 組資料,格式為u v w,求出第乙個頂點到最後乙個定點的最短路徑。題目要求的是單源最短路,並且權值沒有負數,應用drikstra演算法即可求得。需要乙個陣列dist用來儲存第乙個頂點f到所有頂點當前的...
spfa求最短路
給定乙個n個點m條邊的有向圖,圖中可能存在重邊和自環,邊權可能為負數。請你求出1號點到n號點的最短距離,如果無法從1號點走到n號點,則輸出impossible。資料保證不存在負權迴路。輸入格式 第一行包含整數n和m。接下來m行每行包含三個整數x,y,z,表示點x和點y之間存在一條有向邊,邊長為z。輸...
spfa求最短路
題目鏈結 給定乙個n個點m條邊的有向圖,圖中可能存在重邊和自環,邊權可能為負數。請你求出1號點到n號點的最短距離,如果無法從1號點走到n號點,則輸出impossible。資料保證不存在負權迴路。輸入格式 第一行包含整數n和m。接下來m行每行包含三個整數x,y,z,表示存在一條從點x到點y的有向邊,邊...