最短路 逆向思維 字典序最小

2021-10-11 18:03:20 字數 1165 閱讀 5361

題意:

無向圖,每個點由大小寫組成,大寫字母代表城鎮,經過需要繳納(ce

il)s

um/20

(ceil)sum / 20

(ceil)

sum/

20費用,小寫字母代表村莊,經過需要繳納1

11費用。已經到達目的地點t

tt,需要運送到的貨物,求從起點s

ss需要帶的貨物的最小值,並輸出字典序最小的路線(起點s

ss沒有過路費,目的地t

tt有)

思路:從t開始,往s跑,權值為當前點的過路費,輸出字典序最小只要加個特判(見**)

bug: 思路,範圍

#include

using

namespace std;

const

int maxn=

5e5+5;

typedef

long

long ll;

const ll inf=

1e18

;ll to[maxn]

,w[maxn]

,head[maxn]

,nex[maxn]

,k,vis[maxn]

,dis[maxn]

,he,pre[maxn]

,r;int n,m;

char s,t;

struct node};

void

add(

int a,

int b)

void

dij(

int st));

dis[st]

=he;

while

(!p.

empty()

));}

}else);

}}}}

}int

main()

cin>>he>>s>>t;

dij(t)

;printf

("case %lld:\n%lld\n"

,r,dis[s]);

int x=s;

printf

("%c"

,x);

while

(pre[x]

)printf

("\n");

}}

字典序最小的最短路

給出n和m,有n個點,m條雙向邊,1為起點,n為終點,每條邊都有乙個權值,經過每一條邊的時間都為1,求從起點到終點既要時間最少,又要權值組成的序列的字典序最小的一條路徑.4 6 1 2 1 1 3 2 3 4 3 2 3 1 2 4 4 3 1 1 2 1 3 50 n 100 100 n 1000...

Hdu 1385(最短路 字典序)

hdu 1385 1 題意 n個城市,每個城市之間有可能有一條路,走過這條路的花費為x,經過每個城市的花費為val,給出n n的城市地圖,q個查詢,每次查詢x y城市之間的最短距離。如果有多條最短路,輸出字典序最小的那條。2 spfa思路 path陣列記錄路徑,如果存在多條最短路,就用字串記錄一下最...

BFS求最短路徑並且輸出最小字典序路徑

題目鏈結 題目很好理解大家自己去看一下就好,大致思路就是bfs求出路徑並且利用陣列記錄一下路徑,b nx ny b x y 1代表 x,y 是 nx,ny 的字首,這個技巧很好用,從乙個大佬那裡學來的 heihei 然後我們需要從終點開始作為bfs的起點,並且記錄路徑,這樣做的目的就是保證了我們記錄...