字典序最小的最短路

2021-07-24 10:52:23 字數 997 閱讀 1084

給出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<=100000,m<=200000

又是一道雙關鍵字限制結果最優性的問題,此類問題一般思路就是列舉乙個,計算最優另乙個。

對於這道題,我們可以先用spfa算出從終點開始到每個點的距離,然後從起點開始,每一步都選擇權值最小的即可。其實也不是很複雜。

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

const int maxn=610000;

const int inf=0x3f3f3f3f;

struct edgee[maxn];

int edgecnt=0;

int d[maxn],a[maxn];

bool inq[maxn];

queueq;

int n,m;

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

int main()

}} inq[u]=false;

} printf("%d\n",d[1]);

setnow,next;

now.insert(1);

for (int dist=d[1]-1;dist>=0;dist--)else if (next.find(j)==next.end())next.insert(j);}}

} printf("%d ",col);

now=next;next.clear();

} return 0;

}

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

題意 無向圖,每個點由大小寫組成,大寫字母代表城鎮,經過需要繳納 ce il s um 20 ceil sum 20 ceil sum 20費用,小寫字母代表村莊,經過需要繳納1 11費用。已經到達目的地點t tt,需要運送到的貨物,求從起點s ss需要帶的貨物的最小值,並輸出字典序最小的路線 起點...

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的起點,並且記錄路徑,這樣做的目的就是保證了我們記錄...