題意:
無向圖,每個點由大小寫組成,大寫字母代表城鎮,經過需要繳納(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的起點,並且記錄路徑,這樣做的目的就是保證了我們記錄...