poj2449 k短路問題

2022-03-21 02:57:18 字數 1023 閱讀 5753

這個題就是讓你求出s點到t點的第k短路, 使用a*搜尋就可以, 搜尋使用兩個指標函式 h g, h表示從源點到當前點的最短路, g點表示從當前點到匯點的最短路, 搜尋的時候v頂點第k次出隊時的h就是第k短路的長度, **如下:

#include #include 

#include

#include

#include

using

namespace

std;

const

int maxn = 1000 + 10

;int

n, m;

ints, t, k;

struct edge ;

vector

g[maxn]; //

正向邊vectorp[maxn]; //

反向邊int g[maxn]; //

求解出h函式的值

struct

dij};

bool

vis[maxn];

void dijkstra(int

s));

while(!que.empty()));}

}}

}struct

astar

};int

times[maxn];

intastar()

);

if(s == t) k++;

while(!que.empty()));}

}return -1;}

intmain()

); p[v].push_back((edge));

}scanf(

"%d%d%d

", &s, &t, &k);

dijkstra(t);

int res =astar();

printf(

"%d\n

", res);

return0;

}

poj 2449 k短路模板

include include include include include using namespace std const int maxn 1001 const int maxm 100001 const int inf 1 30 struct edge edge e1 maxm edge...

poj 2449 k短路 A 演算法

k短路的定義 1.如果起點終點相同,那麼0並不是最短路,而是要出去一圈回來之後才是最短路,那麼第k短路也是一樣。2.每個頂點和每條邊都可以使用多次。可以存在環和來回走 給定起終點,求k短路的長度 然後求k短路使用a 演算法,其估價函式f n g n h n h n 是終點到結點n的最短路徑,g n ...

POJ 2449 K短路 A 搜尋

題目鏈結 題意 求乙個有向圖的k kk短路長度。思路 經典問題的經典演算法 a a a 搜尋。感覺a a a 搜尋和dij kstr adijkstra dijkst ra堆優化寫法有很多類似的地方。首先以每個點到終點的最短距離作為估計函式g gg,故先需要反向建圖,隨後對反圖從終點t tt做一遍d...