POJ2449 A 演算法 第k短路

2021-08-21 20:15:48 字數 1334 閱讀 1932

題意:傳送門

原題目描述在最下面。

給你乙個有向圖,求指定節點間的第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

就可以了。

ac**:

#include

#include

#include

#include

#include

#include

#include

#define lson rt<<1

#define rson rt<<1|1

#define lowbit(x) (x)&(-(x))

#define all(x) (x).begin(),(x).end()

#define mk make_pair

#define pb push_back

#define fi first

#define se second

using namespace std;

typedef long long ll;

const int inf = 0x3f3f3f3f;

const int n = (int)1e3 +107;

int n, m, k, st, ed;

int dis[n],vis[n],time[n];

struct lp

}aa,bb;

struct lhcw[100000+5],rev[100000+5];

int head[n],tot,headd[n],tum;

intq[2500005];

void add(int u,int v,int w)

void spfa()}}

}}int astar()

} return -1;

}int main()

scanf("%d

%d%d", &st, &ed, &k);

spfa();

if(st == ed)k++;

printf("%d\n", astar());

} return

0;}

原題目描述:

poj2449 A 演算法求解k短路

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

POJ 2449 A 初步 K短路

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

POJ 2449 A 演算法與最短路演算法

題目描述 給定乙個帶權有向圖,詢問從起點到終點第k短路徑長度,如果沒有則輸出 1。這個題目資料有特殊之處,就是如果起點與終點重合時,距離0並不算第一短最短路徑。a 演算法 使用估值函式來進行搜尋,f n g n h n 其中f n 表示狀態起點經過狀態n到狀態終點的估值,g n 為狀態起點到狀態n的...