1. 程式人生 > >【20181103T2】圖【結論+bfs最短路】

【20181103T2】圖【結論+bfs最短路】

一眼最短路

……感覺是個結論啊

建超級源匯?

什麼鬼

合併ab和cd?

不一樣的嗎

開始想的至少有一條路徑是最短路

然後發現不對:

開始對著這個圖瞎想

從B開始找A的最短路,然後把到B小於等於的邊賦成0,再求一遍C到D最短路加起來

刷刷刷寫完了,發現過不了樣例

樣例好像要從A找B……

亂了亂了

之所以不好做,主要是路徑有交集

那交集有什麼特點呢?

會不會最多隻有一段?

然後發現是對的,如果是從某個地方出去,繞一圈再回來,肯定沒有之前優

$N \leq 3000 …… $那我們可以列舉交集的起點和終點,把五段距離加起來就好了

當然還有無交集的情況

由於邊權為1,所以可以bfs N次求出任意兩點的最短路

然後就列舉

注意是雙向邊,可以a連i,b連j,c連j,d連i

複雜度\(O(N^2)\)

\(2^m\)對了10min沒有問題

另:ldx神仙聲稱存在一種最優方案使得兩條路的交集一定在其中一對點的最短路上

該演算法可以AC,還暴踩標算,並且拍了一中午沒有問題

目前正在研究當中

程式碼