1. 程式人生 > >[UOJ#461]新年的Dog劃分[二分圖染色、二分]

[UOJ#461]新年的Dog劃分[二分圖染色、二分]

pan 一個 操作 mat 邊集 題意 中一 https 黑白

題意

給你一張無向連通圖,你並不知道有哪些邊,你首先要回答這張圖是否是二分圖,如果是,回答這張圖黑白染色過後的任意一個點集。你需要在2000次詢問內找到結果,每次你可以詢問原圖中一個邊集刪掉後是否還連通。

\(n\le 200\)

分析

  • 考慮先得到一棵樹,再根據這棵樹的黑白染色的結果劃分成兩個點集,如果是二分圖則除去點集之間的邊不存在其他的邊。如果不是,在此基礎上一定有一條樹邊刪除之後整個圖仍然連通。
  • 考慮不斷刪掉圖上的邊,如果一條邊刪除之後不連通則保留,可以證明操作之後一定能夠得到一棵樹。
  • 這個過程顯然可以二分,如果直接對整個邊集進行二分成本太高,考慮類似bfs的方式不斷地把已知點集擴大,每個點最多一次廢操作,算下來剛好2000次。

代碼

代碼鏈接

[UOJ#461]新年的Dog劃分[二分圖染色、二分]