Poetize I 黑魔法師之門

2022-05-12 02:28:20 字數 1643 閱讀 6130

描述 description

題解:題意很清楚,但是感覺很神。。。

剛開始一直在想如何構造,發現太複雜

然後查題解發現只有要當前兩點在同一連通塊裡,ans*=2,最後輸出ans-1

表示不理解,就沒寫。

昨天翻到了lyd的題解

他引入了乙個叫 元環 的東西,然後證明答案就是 2^元環的個數

我表示對元環的概念不理解,然後發現如果把整張圖畫在一張平面上,那麼 元環 就是 區域!

然後為什麼加入一條邊連線兩個已在同一連通塊裡的時候區域數+1呢?

這使我想到了尤拉公式:

v+f-e=2

其中 v表頂點數,f表區域數,e表邊數

加入一條邊後e++,v不變,所以f要++

至於為什麼答案就是2^區域-1

出題人說:

每乙個區域有選或不選2種情況,若選就把這個區域的邊界的邊的選擇次數++,最後把所有選擇次數為奇數的邊選出來救能夠成答案。可以證明這是不重不漏的。

至於為什麼不重不漏,我還沒有思考出結果。

挖坑待填。。。

**:

1 #include2

3 #include4

5 #include6

7 #include8

9 #include10

11 #include12

13 #include14

15 #include16

17 #include

1819 #include20

21 #include

2223

#define inf 1000000000

2425

#define maxn 250000

2627

#define maxm 500+100

2829

#define eps 1e-10

3031

#define ll long long

3233

#define pa pair34

35#define for0(i,n) for(int i=0;i<=(n);i++)

3637

#define for1(i,n) for(int i=1;i<=(n);i++)

3839

#define for2(i,x,y) for(int i=(x);i<=(y);i++)

4041

#define for3(i,x,y) for(int i=(x);i>=(y);i--)

4243

#define mod 1000000009

4445

using

namespace

std;

4647 inline int

read()

4849

5455

while(ch>='

0'&&ch<='9')

5657

return x*f;

5859}60

intn,m,fa[maxn];

61 inline int find(int x)

6263

intmain()

6465

8081

return0;

8283 }

view code

黑魔法師之門

給出乙個大小為 n 的無向圖,求圖中每個點的度數大於零且都是偶數的子圖的個數。子圖不一定是聯通的!則設圖中最小環 不由其它環組成的環 的個數為 x 如果同一聯通塊中的點再次聯通,就構成了乙個新的最小環。因為這些環選與不選都可構成新子圖,於是 ans 2 x 1 去掉乙個環都不選的情況 include...

並查集 黑魔法師之門

黑魔法師之門 magician.pas c cpp 題目描述 的個數對1000000009取模的值。此處子圖 v,e 定義為 點集v和邊集e都是原圖的任意子集,其中e中的邊的端點都在v中。輸入格式 第一行包含兩個整數n和m。接下來m行,每行兩個整數a和b,代表門控系統新增了一條無向邊 a,b 輸出格...

codevs 1995 黑魔法師之門

題目描述 description 輸入描述 input description 第一行包含兩個整數n和m。接下來m行,每行兩個整數a和b,代表門控系統新增了一條無向邊 a,b 輸出描述 output description 輸出一共m行,表示每次操作後的密碼。樣例輸入 sample input 4 ...