2012-11-18 136 views

回答

-1

您是否熟悉過程Union-Find? 如果你剛剛給出你只需要檢查它的連接圖是否與。我的意思是隻查詢它是否只有一個組件。 否則保持一個映射[pair<int,int>,int]或類似的散列庫來存儲兩個節點之間的最小權重,並比較給定樹的每個邊緣是否具有最小權重。 如果沒有,那麼你確定它不是MST,否則你會查找它是否連接。如果是,那麼它的MST。

在Union Find中使用樹縮短。並且查詢樹是否連接,你可以很容易地檢查每個邊在聯合之前,如果它已經聯合的原因,那麼你肯定有一個循環,它根本不是樹,所以不是MST。

+0

考慮圖K3,具有相等的權重邊緣。其中一條邊不會出現在MST中,即使它具有兩個節點之間的最小權重(實際上,它是這些節點之間唯一的權重)。 – VF1