1. 程式人生 > >Coeforces 611H New Year and Forgotten Tree

Coeforces 611H New Year and Forgotten Tree

題意

給出一張無向圖,但是所有數字都由?代替(也即是說,你只知道每條邊連線的兩個點的標號的位數)
問你這可不可能是棵樹
n<=200000

題解

我們將每個位數相同的點中挑一個點出來稱為關鍵點
那麼一個顯而易見的結論是,所有樹,都可以在不改變那個所有數字都由?代替後的結果的前提下,轉變成一個關鍵樹然後加一大堆葉子的形式(即去掉關鍵點,連通塊大小都是1)
然後我們考慮這個怎麼實現
首先爆搜關鍵樹的形態,6^4
然後就是建模啦
以樣例1,12個點,7個?-?,3個?-??,1個??-??為例
在這裡插入圖片描述
從左到右記為S A B T
源點流出A的是該型別的邊的數量,然後A向所連線的B連INF的邊,然後B向T連的是這種點的數量(減去了關鍵點)
如果u<->v所對應的A向代表u的B有1流量(或者說反向邊有容量),就意味著存在一個u->v的條邊,v同理
這是初始圖,但是每次我們枚舉了樹的形態後,S->A的對應的邊的容量是要同時改變的,然後我們就在改變後的圖上跑網路流,如果滿流,就可以輸出答案了。輸出答案的原理就是看AB間的邊的反向邊有多少容量
以上。