洛谷P3831 回家的路

2022-05-01 00:57:12 字數 2238 閱讀 7137

shoi2012 d2t1

\(2046\) 年 \(oi\) 城的城市軌道交通建設終於全部竣工,由於前期規劃周密,建成後的軌道交通網路由\(2n\)條地鐵線路構成,組成了乙個\(n\)縱\(n\)橫的交通網。如下圖所示,這\(2n\)條線路每條線路都包含\(n\)個車站,而每個車站都在一組縱橫線路的交匯處。

出於建設成本的考慮,並非每個車站都能夠進行站內換乘,能夠進行站內換乘的地鐵站共有\(m\)個,在下圖中,標上方塊標記的車站為換乘車站。已知地鐵執行 \(1\) 站需要 \(2\) 分鐘,而站內換乘需要步行 \(1\) 分鐘。\(serenade\) 想要知道,在不中途出站的前提下,他從學校回家最快需要多少時間(等車時間忽略不計)。

輸入格式:

第一行有兩個整數\(n,m\)。

接下去\(m\)行每行兩個整數\(x,y\),表示第\(x\)條橫向線路與第\(y\)條縱向線路的交

匯站是站內換乘站。

接下去一行是四個整數\(x_1,y_1,x_2,y_2\)。表示 \(serenade\) 從學校回家時,在第 \(x_1\)條橫向線路與第\(y_1\)​條縱向線路的交匯站上車,在第\(x_2\)​條橫向線路與第\(y_2\)​條縱向線路的交匯站下車。

輸出格式:

輸出檔案只有一行,即 \(serenade\) 在合理選擇線路的情況下,回家所需要的時間。如果 \(serenade\) 無法在不出站換乘的情況下回家,請輸出\(-1\)。

輸入樣例#1:

2 1

1 21 1 2 2

輸出樣例#1:

5
輸入樣例#2:

6 9

2 12 5

3 24 4

5 25 6

6 16 3

6 41 1 4 6

輸出樣例#2:

27
輸入樣例#3:

6 10

2 12 5

3 24 4

5 25 6

6 16 3

6 46 6

1 1 4 6

輸出樣例#3:

26
對於 \(30\%\)的資料,\(n\le 50,m\le 1000\);

對於 \(60\%\)的資料,\(n\le 500,m\le 2000\);

對於 \(100\%\)的資料,\(n\le 20000,m\le 100000\);

思路:裸的分層最短路,對於這個題目來說,層與層之間的權值為\(1\)。

而且看資料範圍,\(n\)這麼大的乙個範圍,肯定不能\(n^2\)存圖了,那麼我們就列舉每個中轉點(換乘點),橫縱分別求兩個中轉點之間的距離,然後存下來,每層起點和起點的對映及終點和終點的對映都要是0,然後直接上堆優化dijkstra,這個題就做完了。

分層最短路需要注意的問題:

1、陣列的大小,這個很重要。

2、確定每層之間的權值是多少。

3、考慮如何建邊。

注意了這三個問題之後,分層最短路就跟裸的最短路沒什麼區別了……

於是我們開開心心的來看**(**就不解釋了,有了思路就能看懂):

#include#include#include#include#include#define maxn 200001

using namespace std;

int num,n,m,head[800001],dis[800001];

inline int qread()

struct edge e[800001];

struct node

};struct edge zrj[maxn];

bool cmp1(edge a,edge b));

while(!q.empty()) );

} } }

}int main()

希望這篇題解可以對大家了解分層最短路有些幫助。

P3831 SHOI2012 回家的路 題解

題目傳送門 解法 1 每兩個點都連邊,跑裸的最短路。顯然,n 和 m 非常大,暴力連邊會 tle 和 mle。解法 2 正解 首先,對答案產生貢獻的只有換乘站,所以我們只用連兩種邊 乙個換乘站看作 2 個節點,連邊,邊權為 1 站內換乘 將 x 相等的換乘站相連,y 相等的換乘站相連。其中,起點和終...

題解 P3831 SHOI2012 回家的路

什麼叫分層圖最短路,我不會 kk 感覺自己做法和其他題解不大一樣所以過來發篇題解了。未刻意卡常拿下最優解 就是說給你乙個 n times n 的網格圖和 m 個可換乘點,然後你只能在同一行或同一列 如果在行上移動,就不能在列上移動 反之同理 上移動,除非這個點是可以換乘的。每次走一格花費 2 費,換...

P5468 P6302 NOI2019 回家路線

原題p5468,洛谷加強版p6302,loj3156 聽說原題是用腳造的資料,所以可能無法把 的鍋都測出來,所以還是去加強版吧 做了好長時間,主要是原版得分玄學,有的時候把 乙個地方改錯甚至得了更多的分 當時同時還存在其它的錯 jk,然後加強版又被卡常 kk 斜率優化dp vector 維護凸包 堆...