Hrbust 2122 旅行 最短路

2021-08-10 11:59:29 字數 1748 閱讀 6490

**

time limit: 1000 ms memory limit: 32768 k

total submit: 50(25 users) total accepted: 20(20 users) rating: special judge: no

description

「04.24,和sakura去東京天空樹,世界上最暖和的地方天空樹的頂上。」

「04.26,和sakura去明治神宮,有人在那裡舉辦婚禮。」

「04.25,和sakura去迪士尼,鬼屋很可怕,但是有sakura在,所以不可怕。」

「sakura最好了。」

——江南 《龍族》
繪梨衣和路明非今天要從迪士尼前往天空樹,但他們的錢不多了,所以能省則省,他們現在有乙個地圖上面有n個景點和m條景點之間的路,每條路坐車都需要一定的錢數,現在他們求助於你,請你幫他們計算下從當前地點到目的地最少需要的錢數。

input

有多組資料,每組資料第一行有兩個數字2<=n<=30000,1<=m<=30000。

接下來n行輸入n個地名。

接下來m行每行有兩個字串(長度不超過20)和乙個數字,代表兩地之間的坐車的費用。

接下來一行輸入兩個字串分別代表起點和終點。

output

乙個int數代表最少需要的錢數。

資料保證不會超過int型範圍。

sample input

2 1

disney

tokyoskytree

disney tokyoskytree 1

disney tokyoskytree

sample output

1裸最短路,用map對應上所有地名即可

#include///優先佇列優化

#include

#include

#include

#include

#include

#define ll long long

using

namespace

std;

const

int n=30004;

const

int max=0x7fffffff;

ll dist[n];///記錄到達每個節點的最短路

ll n,m,flag;

struct edge

///結構體建構函式

bool

operator

<(const edge &a)const

///過載運算子

};vector

v[n];///(結構體型別)動態陣列做鄰接矩陣

void dijkstra(int s)

///投入乙個可以到達的點,權值取當前到達節點的已知最短路}}

}int main()

char from[25],to[25];

ll val;

for(int i=0;iscanf("%s %s %lld",from,to,&val);

v[mp[from]].push_back(edge(mp[to],val));

v[mp[to]].push_back(edge(mp[from],val));

}scanf("%s %s",from,to);

dijkstra(mp[from]);

printf("%lld\n",dist[mp[to]]);

}}

旅行問題 (求最短路)

題目 給定乙個n個頂點組成的帶權有向圖的距離矩陣d i,j inf 表示沒有邊 要求從頂點0出發,再回到頂點0 問所經過的邊權重的最小值是多少 5 80 1 3 0 3 4 1 2 5 2 0 4 2 3 5 3 4 3 4 1 6 4 0 7 資料範圍很大,所以用了dijkstr的優化版 incl...

最短路徑之旅行商問題

通過圖 無向圖或有向圖 中所有邊一次且僅一次行遍圖中所有頂點的通路稱為 尤拉通路,通過圖中所有邊一次且僅一次行遍所有頂點的迴路稱為 尤拉迴路。具有 尤拉迴路的圖稱為尤拉圖 euler graph 具有尤拉通路而無尤拉迴路的圖稱為半尤拉圖。和哈密頓迴路相比,哈密頓迴路是所有點僅僅經歷一次。郵遞員問題 ...

GXOI GZOI2019 旅行者 (最短路)

給定乙個有向圖,其中一些頂點為關鍵點。求這些關鍵點兩兩之間最小距離。考試時沒怎麼想寫了50分暴力走了。以為是什麼強連通分量的解法,結果就是個最短路。直接從關鍵點跑一次最短路dis 0 再把圖反向在跑一次最短路dis 1 跑最短路的時候記錄起點col 0 1 那麼最後直接列舉一條邊 x,y,w 當co...