利用Dijikstra最短路特定寫法求次短路,DP

2021-09-25 20:52:08 字數 3380 閱讀 5293

第一題:2019暑假牛客第4場j-free:

官方題解:

}第二題:杭電多校hdu6181:題目傳送門

ac code:

#include

// #include

// #include

// #include

// #include

using namespace std;

#define per(i,a,b) for(int i = (a);i <= (b);++i)

#define rep(i,a,b) for(int i = (a);i >= (b);--i)

const

int maxn =

2e5+10;

typedef

long

long ll;

#define inf 1e18

int n =

0,m =0;

int cnt =

0,head[maxn]

;ll d1[maxn]

,d2[maxn]

;bool vis[maxn]

;struct edge

edge()

edge

(int to1,ll w1,

int nex1)};

edge e[maxn]

;void

init()

}void

add_edge

(int from,

int to,ll w)

void

dijikstra

(int s)

for(

int i = head[u.to]

;i !=-1

;i = e[i]

.nex));

}if(d2[ed.to]

> way && d1[ed.to]

< way));

}}}printf

("%lld\n"

,d2[n]);

}int

main()

dijikstra(1

);}return0;

}

也是a*模板題:

#include

#define per(i,a,b) for(int i = (a);i <= (b);++i)

#define rep(i,a,b) for(int i = (a);i >= (b);--i)

#define inf 1e18

using namespace std;

typedef

long

long ll;

const

int maxn =

1e5+10;

int n =

0,m =0;

ll d[maxn]

;int head[maxn]

;int cnt =0;

bool vis[maxn]

;struct node};

struct edgee[

2*maxn]

;//需要兩倍的空間,每一次是有向邊

void

init()

}void

add_edge

(int from,

int to,ll w)

void

dijikstra

(int s));

while

(!pq.

empty()

) vis[u.v]

= true;

for(

int i = head[u.v]

;i !=-1

;i = e[i]

.nex));

}}}}

ll a_start

(int s,

int k));

while

(!pq.

empty()

)else

}for

(int i = head[u.v]

;i !=-1

;i = e[i]

.nex));

//記錄從原點到該點的距離,比較時使用的是期望函式大小,還要+d[ed.to]}}

return-1

;}intmain()

dijikstra

(n);

// per(i,1,n)

// puts("");

printf

("%lld\n"

,a_start(1

,2))

;}return0;

}

洛谷 3905 最短路,dijikstra

題目鏈結 c4選拔賽的最後一題,好氣啊,如果放在前面我就寫出來了。下次一定不要再無謂的卡題了。這題就是dijk,如果路沒被炸就視為0,炸了就看作有長度。還是好氣啊。include include define inf 0x3f3f3f3f using namespace std int map 10...

單源最短路徑 dijikstra

p4779 模板 單源最短路徑 標準版 適用於不含負權值路徑的圖 include include include include using namespace std define maxn 100005 define maxm 500005 define inf 2147483647 int n...

HDU 2544最短路 dijikstra演算法

輸入包括多組資料。每組資料第一行是兩個整數n m n 100,m 10000 n表示成都的大街上有幾個路口,標號為1的路口是商店所在地,標號為n的路口是賽場所在地,m則表示在成都有幾條路。n m 0表示輸入結束。接下來m行,每行包括3個整數a,b,c 1 a,b n,1 c 1000 表示在路口a與...