POJ 2449 A 經典水題

2021-07-09 13:28:56 字數 801 閱讀 3556

先求每個點到目地t的最短距離。

這一步可以將圖的每條邊反向,做單源最短路求得。

然後就是在圖上搜尋。

可以用優先佇列來實現搜尋狀態的篩選。

f=g+h

g為搜尋到此點已經走過的距離,h為此點到t的最短距離。

當第k次搜到t,此時的g+h就是第k短路。

#include#include#include#include#include#includeusing namespace std;

const int inf=0x3f3f3f3f;

int n,m;

int s,t,k;

struct edge

e1[100005],e2[100005];

int esize1,esize2;

int head1[1005],head2[1005];

int d[1005];

void init()

void addedge(int from,int to,int cost)

void dij()}}

}struct step

bool operator>(const step &tmp)const

};int astar()

for(int i=head1[now.v];i!=-1;i=e1[i].next)

}return -1;

}int main()

{ while(~scanf("%d%d",&n,&m))

{init();

int a,b,c;

for(int i=0;i

POJ 2449 A 初步 K短路

原以為a 會很難懂 結果狐狸大大一口氣就給我講懂了a 和k短路的求法.所謂a 就是啟發是搜尋.說白了就是給bfs搜尋乙個順序使得搜尋更加合理減少無謂的搜尋.如何來確定搜尋的順序?也就是用乙個值來表示這個值為f x 每次搜尋取f x 最小的拓展.那麼這個f x h x g x 其中這個h x 就是當前...

poj2449 A 演算法求解k短路

今天想到了以前早就遺留下來的乙個演算法 a 演算法,基本上,我對於a 只有過簡單的了解,卻從來沒有具體的寫過 a 於是就有了今天的a 學習。a 演算法相比與其他的搜尋來說,它多了乙個估價函式而已。而估價函式在不同的題目中形式又不同,這正是a 難的地方啊 對於此題 給出n個點,m條邊,可能又重邊,給定...

POJ2449 A 演算法 第k短路

題意 傳送門 原題目描述在最下面。給你乙個有向圖,求指定節點間的第k短路。先反向跑出從終點開始的到每個節點的最短距離。樂觀估計函式f n g n h n f n g n h n g n g n 表示到當前狀態跑的距離,h n h n 表示到目標狀態還需要的距離。對於a a 然後跑一遍bf s bfs...