jzoj_3385_黑魔法师之门
Description
經過了16個工作日的緊張忙碌,未來的人類終于收集到了足夠的能源。然而在與Violet星球的戰爭中,由于Z副官的愚蠢,地球的領袖applepi被邪惡的黑魔法師Vani囚禁在了Violet星球。為了重啟Nescafé這一宏偉的科技工程,人類派出了一支由XLk、Poet_shy和lydrainbowcat三人組成的精英隊伍,穿越時空隧道,去往Violet星球拯救領袖applepi。
applepi被囚禁的地點只有一扇門,當地人稱它為“黑魔法師之門”。這扇門上畫著一張無向無權圖,而打開這扇門的密碼就是圖中每個點的度數大于零且都是偶數的子圖的個數對1000000009取模的值。此處子圖 (V, E) 定義為:點集V和邊集E都是原圖的任意子集,其中E中的邊的端點都在V中。
但是Vani認為這樣的密碼過于簡單,因此門上的圖是動態的。起初圖中只有N個頂點而沒有邊。Vani建造的門控系統共操作M次,每次往圖中添加一條邊。你必須在每次操作后都填寫正確的密碼,才能夠打開黑魔法師的牢獄,去拯救偉大的領袖applepi。
Input
第一行包含兩個整數N和M。
接下來M行,每行兩個整數A和B,代表門控系統添加了一條無向邊 (A, B)。
Output
輸出一共M行,表示每次操作后的密碼。
Solutions
實際上每次操作后的答案就是 2^(圖中”元”環的個數) -1。在用一個并查集即可。
代碼
varn,m,ans,i,x,y:longint;f:array [0..200001] of longint; function find(o:longint):longint; beginif f[o]=o then exit(o);f[o]:=find(f[o]);exit(f[o]); end;beginreadln(n,m);ans:=1;for i:=1 to n do f[i]:=i;for i:=1 to m dobeginreadln(x,y);if find(x)=find(y) then ans:=(ans*2) mod 1000000009else f[find(x)]:=find(y);writeln(ans-1);end; end.轉載于:https://www.cnblogs.com/zyx-crying/p/9319497.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的jzoj_3385_黑魔法师之门的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: webstorm主要快捷键
- 下一篇: 《JavaScript面向对象的编程指南