Graph Destruction 并查集,图论(500)
生活随笔
收集整理的這篇文章主要介紹了
Graph Destruction 并查集,图论(500)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題意 :
- 給一n個點m條邊的無向圖,問逐漸刪去1-n點及它們的邊,分別輸出當前剩下多少個連通區域
思路 :
- 求連通塊,想到了并查集,但并查集是增邊,這里是減邊,只要倒序考慮問題即可,那么問題轉換為 :
- 逐漸增加n-1點,同時增加當前i點與j點(j>i)(j>i)(j>i)的邊,問添加i點后的連通塊數量
- 暴力會tle,考慮優化方案,輸入邊時,只存小的往大的邊
- 對于每個逐漸加入的點i,連通塊個數先加一;每增加一條邊,如果另一個端點不在同一個并查集內,則連通塊數量減一
- 全局變量ans記錄當前連通塊數量,就不用每次算一遍了
- 注意最開始還有一個0的狀態,以及最后是加到2為止,而不是1(看圖)
- 有一個易錯點!!并查集的時候不要輕易u=find(u),因為在循環里,會改變循環變量,死循環
總結
以上是生活随笔為你收集整理的Graph Destruction 并查集,图论(500)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Longest X 贪心,滑动窗口,前缀
- 下一篇: Longest Y 字符串,货仓选址模型