刷过一题之黑魔法师之门

经过了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。

第一行包含两个整数 N 和 M。接下来 M 行,每行两个整数 A 和 B,代表门控系统添加了一条无向边(A, B)。

一共 M 行,表示每次操作后的密码。

输入示例:

4 8
3 1
3 2
2 1
2 1
1 3
1 4
2 4
2 3

输出示例:

0
0
1
3
7
7
15
31

数据范围:N≤200000 ,M≤300000 。

提醒:子图不一定连通。举另外一个例子,例如点(1、2、3),(4、5、6)分别组成一个三元环,则图中有三个所求子图。

题解:

并查集维护,如果两点在同一集合中,则  ans=ans*2+1。

 1 #include<iostream>
 2 using namespace std;
 3 int a,m,tem,tem1;
 4 int n[200005];
 5 int find(int x) {return x==n[x]?x:n[x]=find(n[x]);}
 6 int read()
 7 {
 8     int x=0,f=1;
 9     char ch=getchar();
10     while(ch<‘0‘||ch>‘9‘)
11     {
12         f=-1;
13         ch=getchar();
14     }
15     while(ch>=‘0‘&&ch<=‘9‘)
16     {
17         x=x*10+ch-‘0‘;
18         ch=getchar();
19     }
20     return f*x;
21 }
22 int main()
23 {
24     a=read();
25     m=read();
26     int ans=0;
27     for(int i=0;i<a;i++) n[i]=i;
28     for(int i=0;i<m;i++)
29     {
30         tem=read();
31         tem1=read();
32         int temp=find(tem),temp1=find(tem1);
33         if(temp!=temp1) {n[temp]=temp1;}
34         else
35         {
36             ans+=ans+1;
37             ans%=1000000009;
38         }
39         printf("%d\n",ans);
40     }
41     //system("pause>nul");
42     return 0;
43 }

C++ Anser

时间: 2024-12-25 03:47:47

刷过一题之黑魔法师之门的相关文章

入门OJ 4192: [Noip模拟题]黑魔法师之门

题目 Description applepi被囚禁的地点只有一扇门,当地人称它为"黑魔法师之门".这扇门上画着一张无向无权图,而打开这扇门的密码就是图中[每个点的度数大于零且都是偶数]的子图的个数对1000000009取模的值.此处子图 (V, E) 定义为:点集V和边集E都是原图的任意子集,其中E中的边的端点都在V中.但是Vani认为这样的密码过于简单,因此门上的图是动态的.起初图中只有N个顶点而没有边.Vani建造的门控系统共操作M次,每次往图中添加一条边.你必须在每次操作后都填写

黑魔法师之门

并查集 黑魔法师之门 试题描述   经过了16 个工作日的紧张忙碌,未来的人类终于收集到了足够的能源.然而在与Violet星球的战争中,由于Z 副官的愚蠢,地球的领袖applepi 被邪恶的黑魔法师Vani 囚禁在了Violet 星球.为了重启Nescafé这一宏伟的科技工程,人类派出了一支由XLk.Poet_shy 和lydrainbowcat 三人组成的精英队伍,穿越时空隧道,去往Violet 星球拯救领袖applepi.applepi 被囚禁的地点只有一扇门,当地人称它为“黑魔法师之门”.

CODEVS1995 || TYVJ1863 黑魔法师之门

P1863 [Poetize I]黑魔法师之门 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 经过了16个工作日的紧张忙碌,未来的人类终于收集到了足够的能源.然而在与Violet星球的战争中,由于Z副官的愚蠢,地球的领袖applepi被邪恶的黑魔法师Vani囚禁在了Violet星球.为了重启Nescafé这一宏伟的科技工程,人类派出了一支由XLk.Poet_shy和lydrainbowcat三人组成的精英队伍,穿越时空隧道,去往Violet星球拯救领袖

[Poetize I]黑魔法师之门

描述 Description applepi被囚禁的地点只有一扇门,当地 人称它为“黑魔法师之门”.这扇门上画着一张无向无权图,而打开这扇门的密码就是图中[每个点的度数大于零且都是偶数]的子图的个数对 1000000009取模的值.此处子图 (V, E) 定义为:点集V和边集E都是原图的任意子集,其中E中的边的端点都在V中. 但是Vani认为这样的密码过于简单,因此门上的图是动态的.起初图中只有N个顶点而没有边.Vani建造的门控系统共操作M次,每次往图中添加一条边.你必须在每次操作后都填写正确

黑魔法师之门 (magician)-并查集

题目 经过了 16 个工作日的紧张忙碌,未来的人类终于收集到了足够的能源.然而在与 Violet 星球的战争中,由于 Z 副官的愚蠢,地球的领袖 applepi 被邪恶的黑魔法师 Vani 囚禁在了 Violet 星球.为了重启 Nescafé这一宏伟的科技工程,人类派出了一支由 XLk.Poet_shy 和 lydrainbowcat 三人组成的精英队伍,穿越时空隧道,去往 Violet 星球拯救领袖 applepi. applepi 被囚禁的地点只有一扇门,当地人称它为“黑魔法师之门”.这扇

[codevs 1995]黑魔法师之门(并查集)

题目:http://codevs.cn/problem/1995/ 分析:脑补一下满足题目要求的子图肯定就是环……于是题目就变成了不断加边求环的个数.看起来有点麻烦……但是环的实质是几个小环组合起来的……所以我们只需要知道最基础的环的个数就行了,根据二项式定理那么就是2^(最基础的环的个数)-1.还是不好做啊!!!!!! 没关系……并查集来了…… 假设对于第i-1操作后,最终答案为ans,那么对于第i次操作,分为两种情况 ①加入这条边后,没有出现新环,那么说明对结果无影响,结果还是ans ②加入

2014082701黑魔法师之门(C++)

#include<iostream>#define p 1000000009using namespace std;int read() { int f=0; char x;x=getchar(); while(x<'0'||x>'9') x=getchar(); while(x>='0'&&x<='9') { f=f*10+x-'0'; x=getchar(); } return f;}int fa[200001];int find(int x){re

每天刷个算法题20160522:支持各种类型的并查集

版权所有.所有权利保留. 欢迎转载,转载时请注明出处: http://blog.csdn.net/xiaofei_it/article/details/51524671 为了防止思维僵化,每天刷个算法题.已经刷了几天了,现在发点代码. 我已经建了一个开源项目,每天的题目都在里面: https://github.com/Xiaofei-it/Algorithms 绝大部分算法都是我自己写的,没有参考网上通用代码.读者可能会觉得有的代码晦涩难懂,因为那是我自己的理解. 最近几天都是在写一些原来的东西

每天刷个算法题20160521:二叉树高度(递归与非递归)

版权所有.所有权利保留. 欢迎转载,转载时请注明出处: http://blog.csdn.net/xiaofei_it/article/details/51502727 为了防止思维僵化,每天刷个算法题.已经刷了几天了,现在发点代码. 我已经建了一个开源项目,每天的题目都在里面: https://github.com/Xiaofei-it/Algorithms 绝大部分算法都是我自己写的,没有参考网上通用代码.读者可能会觉得有的代码晦涩难懂,因为那是我自己的理解. 最近几天都是在写一些原来的东西