已經不止一次瞭解到建圖的技巧了, 例如:
- 最大流建立超級源點,超級匯點
- 建反圖,但已經忘了這個題是什麼時候的題了
- 點權轉成邊權
2024/7/15 介紹點權轉邊權
如下所示,建立一個有 \(2N\) 個頂點和 \(N + M\) 條邊(成本只分配給邊)的有向圖,答案就是從頂點 \(1_\text{in}\) 到頂點 \(i_\text{out}\) 的路徑的最小成本。
- 對於原始圖中的每個頂點 \(i\) ,建立兩個頂點 \(i_\text{in}\) 和 \(i_\text{out}\) ,並新增一條代價為 \(A_i\) 的有向邊 \(i_\text{in} \to i_\text{out}\) 。
- 為原始圖中的每條邊 \(u \leftrightarrow v\) 新增兩條代價相同的有向邊 \(u_\text{out} \to v_\text{in}\) 和 \(v_\text{out} \to u_\text{in}\) 。
使用 Dijkstra 演算法可以在 \(O(M \log N)\) 時間內計算出最小成本。
這種方法也可用於其他目的。