1. 程式人生 > 其它 >[做題記錄-亂做] [AGC004F] Namori

[做題記錄-亂做] [AGC004F] Namori

題意

給定一個 \(N\) 個點,\(M\) 條邊的圖,沒有自環,沒有重邊。其中 \(N-1\le M\le N\),每個點初始是白色。每次操作可以處理一條邊,其兩個點如果顏色相同則都變成相反的顏色(黑變白,白變黑)。詢問能否將每個點都變為黑色。如果能,輸出最少的運算元;如果不能,輸出 \(-1\).

\[1 \leq n \leq 10^5, n - 1\leq m \leq n \]

題解

淚目, 根本不會

先考慮樹的情況。

據說有套路是按層奇偶分類, 如果看成奇數層是有棋子的, 偶數層沒有, 每次的操作就是移動棋子, 使得偶數層放滿棋子。小編也不知道咋想到的, 反正確實是對的。

然後就可以發現一條邊被移動的次數就是棋子數量和空位的差, 這一步大概可以感覺出來, 然後樹大概就搞完了。

然後考慮基環樹, 奇環是簡單的, 直接斷一條邊, 然後由於這條邊兩邊顏色一樣, 用來消同顏色的東東即可。

偶環的話可以列出移動次數相關的方程, 感覺上就是在數軸上選一個位置使得總和最小, 直接選就好。

至於為啥隨便選條邊斷開就好, 可以考慮是我們考慮這條邊的所有作用, 偶環裡面實際上我們對所有的情況都考慮了貢獻在環上的流動, 奇環裡面的是因為本來動了也是要被那條邊消掉, 消掉以後更新環上貢獻的時候就無法更優了。

太奇妙了