我們可以發現,乙個連通圖中只有第乙個放進去的是無法產生貢獻的,而其他都是可以把危險係數乘222的。所以我們就只要判斷有多少個連通圖,這也就說明,有x
xx個點是不能產生貢獻。那麼剩餘的n−x
n−xn−
x連通圖個數的點都是可以讓答案乘2
22的。
那麼就用並查集判斷連通圖個數,然後再高精乘即可。
#include
using
namespace std;
const
int t=
301;
int n,m,x,x,y,a[t]
=,f[
10001];
bool b[
10001];
inline
intfind
(int x)
voiddf(
int mm)
}int
main()
小 X 的液體混合
example mixture.in 3 21 2 2 3mixture.out 4scoring 對於 30 的資料,n 10。對於 100 的資料,1 n 1000,a b,同種反應不會出現多次。輸入的一張圖可能有多個不同的連通塊,而每個不同的連通塊之間互不影響,且每個 不同連通塊中加入的第一種...
題解 小X的液體混合
雖然小x不喜歡化學原理,但他特別喜歡把一大堆液體倒在一起。現在小x有n種液體,其中m對會發生反應。現在他想把這n種液體按某種順序倒入乙個容器內,讓他獲得最刺激的體驗,也就是使危險係數盡量大。我們可以這樣計算危險係數,一開始容器內沒有任何液體,危險係數為1。每次液體倒入容器時,若容器內已有一種或多種液...
並查集的啟發式合併
在原來剛接觸並查集的時候,感覺確實很方便,也是認為並查集就那麼點東西,簡單方便,但是後來無意間發現了乙個並查集的啟發式合併,可以對並查集進行優化,它優化的理論是用乙個陣列來記錄每個節點的深度,每一次合併都把節點向深度 高度 大的節點上進行合併,從而對最後的 生成樹 深度進行了優化。受益匪淺,好長時間...