UVALive 6622 Absurdistan Roads
題意:
n(2000)個點的圖 給出它的最短路矩陣 用n條邊構造出滿足最短路矩陣的圖 保證圖連通且解存在
思路:
我們可以先保證圖連通 那麼需要n-1條邊 聯想到是不是最小生成樹??
可以這樣想 假設abc點已經連通 現在考慮再加入到連通塊中一個點比如d 如果d-b的距離是d到abc三個點中最短的 那麼這條邊一定要被選 因為如果不選d-b 假設選了d-a 那麼d-a已經長於d-b了 所以d-b的距離將不永遠得不到滿足
這樣我們就可以根據最小生成樹選出n-1條邊了 還差一條 這時我們想知道最短路矩陣是否已經滿足了 如果滿足 隨便加一條重邊就好了 (這裡可以利用dfs來算出n-1條邊時的最短路矩陣 因為Floyd要n^3)
如果不行 我們加哪條邊呢?? 很容易想到用新矩陣和原矩陣比較 差異最小的那條邊就是要加的 證明和上面差不多 如果不加最小的 就算加了次小的 那麼最小的也得不到滿足
代碼:
#include
#include
#include
#include
#include
#include