2019 蓝桥杯国赛 B 组模拟赛 E 蒜头图 (并查集判环)


思路:
我们看条件,发现满足条件的子图无非就是一些环构成的图,
因为只有形成环,才满足边的两个点都在子图中,并且子图中节点的度是大于0的偶数。
那么如果当前有k个环,我们可以选2^k-1个子图,为什么?
我们从这k个环中选择 1~n个都可以满足条件,那么就是C(k,1)+C(k,2)+C(k,3)+...+C(k,n) = 2^k-1
接下来就看如何判定当前图有多少个环?
我们每加一个边,如果加入之前,这个边的两个端点a,b,如果a和b已经在图中联通了,那么加上这条边必多一个子图为环。
我们用并查集来维护两个节点是否联通即可。
细节见代码:
#include<bits/stdc++.h>
using namespace std; const int mod = ;
int n,m,f[]; int find(int x){
return f[x] == x ? x : f[x] = find(f[x]);
} void merge(int a,int b){
int x = find(a);
int y = find(b);
if(x != y ) f[x] = y;
} int main(){
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++) f[i] = i;
long long ans = ;
for(int i= ;i<=m;i++){
int a,b;
scanf("%d%d",&a,&b);
int x = find(a), y = find(b);
if(x == y){//这里如果 两个点祖先一样 说明找到环了
ans <<= ;
if(ans > mod) ans -= mod;
}else merge(a,b);
printf("%lld\n",ans-);
}
return ;
}
2019 蓝桥杯国赛 B 组模拟赛 E 蒜头图 (并查集判环)的更多相关文章
- 52-2018 蓝桥杯省赛 B 组模拟赛(一)java
最近蒜头君喜欢上了U型数字,所谓U型数字,就是这个数字的每一位先严格单调递减,后严格单调递增.比如 212212 就是一个U型数字,但是 333333, 9898, 567567, 313133131 ...
- 2016 第七届蓝桥杯 c/c++ B组省赛真题及解题报告
2016 第七届蓝桥杯 c/c++ B组省赛真题及解题报告 勘误1:第6题第4个 if最后一个条件粗心写错了,答案应为1580. 条件应为abs(a[3]-a[7])!=1,宝宝心理苦啊.!感谢zzh ...
- 记 2019蓝桥杯校内预选赛(JAVA组) 赛后总结
引言 好像博客好久没更新了 哈哈哈哈哈 趁现在有空更新一波 不知道还有没有人看 确实该记录一下每天做了什么了 不然感觉有些浑浑噩噩了 比赛介绍 全称: 蓝桥杯全国软件和信息技术专业人才大赛 蓝桥杯 实 ...
- 2015年第六届蓝桥杯C/C++B组省赛题目解析
一.奖券数目 有些人很迷信数字,比如带“4”的数字,认为和“死”谐音,就觉得不吉利.虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求.某抽奖活动的奖券号码是5位数(10000-99999),要求其中 ...
- 2019 蓝桥杯国赛 B 组模拟赛 题解
标签 ok #include<bits/stdc++.h> using namespace std; /* 求阶乘 去除尾部0 每次求阶乘时:结果去除尾0,并对 1e6取余 */ type ...
- 2019 蓝桥杯国赛 B 组模拟赛 D. 程序设计:公约数
蒜头君有n个数,他想要从中选出k个数,使得它们的最大公约数最大.请你求出这个最大的最大公约数. 输入格式第一行输入两个整数 .第二行输入 个整数 . 输出格式输出一个整数. 数据范围 样例输入14 3 ...
- 2019 蓝桥杯省赛 A 组模拟赛(一)-修建公路
题目: 蒜头国有 nn 座城市,编号分别为 0,1,2,3,...,n-1.编号为 x 和 y 的两座城市之间如果要修高速公路,必须花费 x|y 个金币,其中|表示二进制按位或. 吝啬的国王想要花最少 ...
- 2019 蓝桥杯省赛 A 组模拟赛(一)-忽明忽暗
走廊里有 nn 盏灯,编号依次为 1,2,3,...,n,由学校电路控制中心管理.初始时,所有灯都是关闭的.某黑客入侵了学校电路控制中心,黑客想让灯忽明忽暗,进行了 n 轮操作.第 i 轮操作,会让所 ...
- 计蒜客 2019 蓝桥杯省赛 B 组模拟赛(三)一笔画
#include<iostream> #include<cstring> #include<cstdio> #include<algorithm> us ...
随机推荐
- JAVA第二周课程总结
本周我们开始学习一门新的课程JAVA 本周主要学习内容: 1.认识java,以及它的开发工具jdk 2.了解Java的语言特点 3.搭建Java开发环境,jdk的安装和配置
- WIN10下安装Linux子系统并安装xface4界面
WIN10下安装Linux子系统并安装xface4界面,使用win10自带的远程桌面工具登陆成功. 成功截图: 安装步骤 1.安装[适用于Linux的Windows子系统]组件 2.win10应用商店 ...
- jmeter正则表达式提取
使用jmeter正则表达式提取器之前,首先 使用httpwatch 分析一下 我要要测试的系统正则管理的规则: 例如:我这里要关联的是一个ODS数据仓库平台的登录 1./sso/login..单点登录 ...
- Android NDK的生命周期JNI_OnLoad与JNI_OnUnload(转)
摘要 NDK的生命周期 //当动态库被加载时这个函数被系统调用 JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) { LOGI ...
- C语言:结构体中(.)和(->)的区别
https://blog.csdn.net/faihung/article/details/79190039 这虽然是个小问题,但有时候很容易让人迷惑,因为有的时候用混淆了,程序编译不通过. 下面说说 ...
- $.ajax函数调接口,报异常No converter found for return value of type: class java.util.ArrayList
接口正常执行,返回给前端后报服务器500异常,异常详情: org.springframework.http.converter.HttpMessageNotWritableException: No ...
- webpack中的 chunk,module,bundle的区别,以及hidden modules是什么
hidden modules是什么: chunk,module,bundle的区别 总结: module是指任意的文件模块,等价于commonjs中的模块 chunks是webpack处理过程中被分组 ...
- Spring 注解概览
从Java5.0开始,Java开始支持注解.Spring做为Java生态中的领军框架,从2.5版本后也开始支持注解.相比起之前使用xml来配置Spring框架,使用注解提供了更多的控制Spring框架 ...
- text_to_be_present_in_element
text_to_be_present_in_element(locator,text)是指定页面元素的文本位置, 一般用于验证一个文本信息或者错误的信息,我们任然以百度登录为案例, 用户名和密码为空, ...
- 应用安全 - CMS - vBulletin漏洞汇总
SSV-15384 Date: 2004.11 漏洞类别: SQL 注入 SSV-15476 Date: 2005.2 漏洞类别: RCE SSV-15482 Date: 2005.2 类型: RCE ...