更新日誌
前言
據說Boruvka
演算法是最古早的最短路演算法,多半是真的。
為什麼叫菠蘿演算法?不知道。多半是音譯吧。
思路
這個演算法需要執行多輪,直到生成最小生成樹。
在每一輪中,對於每一個點(或者說,連通塊),都找出以它為一個端點(或者說,一個端點在這個連通塊中)的最短的邊,並且將這條邊加入最小生成樹,並將其連線的兩個點(連通塊)合併。
每一輪中至少都可以使聯通塊數除二(因為每條邊都連線了兩個連通塊,而最多隻會有兩條邊重合。),故而時間複雜度是 \(O(logn)\) 的。
通常情況下,菠蘿演算法用於解決邊特別多的情況,例如完全圖。
細節以及模板暫缺
細節
模板
例題
程式碼
前注:非題解,不做詳細講解