如何支持動態加滿足某種條件不定個數邊,在線判斷是否是二分圖(見問題描述)?

不斷添加一些非負整數,對於新添加的數x,向之前已經添加過的、且滿足與x相加之後是一個完全平方數的非負整數連無向邊,在線判斷是否是一個二分圖。

【P3940】分組 - 洛谷


參考本題題解。

大致思路是使用帶權並查集維護圖的連通塊,即並查集是一個森林,帶權並查集則是一個帶邊權的森林,邊權用0或1,兩點間路徑上的邊異或為0則表示兩點在二分圖的同一部,否則在不同部。路徑壓縮時需修改邊權。


謝邀。

重點是如何在線判斷是否是二分圖吧,連邊什麼都是次要的。

經典問題,帶權並查集可以直接做,當且僅當沒有奇環的時候是二分圖。

可以參考noi2001食物鏈那道題,做法一樣的。


推薦閱讀:

哪些開發會用到微積分、離散數學、線性代數、概率論的知識?
為什麼自己寫的qsort比不上C語言庫里自帶的qsort效率高?
Mathematica 是怎麼做不定積分的?能不能用幾個簡單的例子,簡述一下求不定積分的演算法?

TAG:演算法 | NOIP | ACM競賽 |