NYOJ 118 修路方案(次小生成树)
生活随笔
收集整理的這篇文章主要介紹了
NYOJ 118 修路方案(次小生成树)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
修路方案
時間限制:3000?ms ?|? 內存限制:65535?KB 難度:5 描述南將軍率領著許多部隊,它們分別駐扎在N個不同的城市里,這些城市分別編號1~N,由于交通不太便利,南將軍準備修路。
現在已經知道哪些城市之間可以修路,如果修路,花費是多少。
現在,軍師小工已經找到了一種修路的方案,能夠使各個城市都聯通起來,而且花費最少。
但是,南將軍說,這個修路方案所拼成的圖案很不吉利,想讓小工計算一下是否存在另外一種方案花費和剛才的方案一樣,現在你來幫小工寫一個程序算一下吧。
輸入每組測試數據的第一行是兩個整數V,E,(3<V<500,10<E<200000)分別表示城市的個數和城市之間路的條數。數據保證所有的城市都有路相連。
隨后的E行,每行有三個數字A B L,表示A號城市與B號城市之間修路花費為L。
算法1、step 1.? 先用prim求出最小生成樹T.
???????? 在prim的同時,用一個矩陣max[u][v] 記錄 在T中連結任意兩點u,v的唯一的
???????? 路中權值最大的那條邊的權值. (注意這里).
???????? 這是很容易做到的,因為prim是每次增加一個結點s, 而設已經標號了的結點
???????? 集合為W, 則W中所有的結點到s的路中的最大權值的邊就是當前加入的這條邊.
???????? step 1 用時 O(V^2).
???? step 2.? 枚舉所有不在T中的邊uv, 加入邊uv則必然替換權為max[u][v]的邊。
算法2、先用prim求出最小生成樹T。
?????????? 枚舉T中的每一條邊,把它刪除,求剩下的圖的最小生成樹。選所有枚舉得到的生成樹中的最小的那一個。
總結
以上是生活随笔為你收集整理的NYOJ 118 修路方案(次小生成树)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 假如有人炸了支付宝的存储服务器...
- 下一篇: 还在用 Swagger(丝袜哥)生成接口