這個題就是讓你求出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...