題解:AT_abc378_f [ABC378F] Add One Edge 2

Redamancy_Lydic發表於2024-11-04

題目讓我們求一棵給定的樹有多少環上點度數均為 \(3\) 的基環樹。

容易想到,新新增的環連線的兩個節點一定都是度數為 \(2\) 的點,且這兩個點之間所有節點的度數均為 \(3\)

所以我們可以找到每一個由度數為 \(3\) 的點組成的連通塊,並對於每一個連通塊找到它的邊緣有幾個度數為 \(2\) 的點。

設度數為 \(2\) 的點的個數為 \(sum\),那麼該連通塊能夠產生的貢獻顯然就是這 \(sum\) 個點中選任意兩個點的方案數,顯然就是 \(sum\cdot(sum-1)\over 2\)

找連通塊的時候我們用一個 \(vis\) 陣列標記已經找過的點,每次只對度數為 \(3\) 且之前沒被標記的點進行搜尋,這樣可以保證不重不漏。

提交記錄

相關文章