传送门

这个题首先可以考虑一个点也算作一个联通块
去掉所有的边那么答案即为\(2^m*n\)
然后发现每加上一条边就会使联通块的数量减1,这部分是\(-2^{m-1}*m\)
但是这是一个仙人掌图,在环上这样做是错的
简单分析可以发现环上这样做会导致多减,加回来就可以了,这部分是\(2^{m-len}\)(len为环内的边数)
这样我们就算出所有联通块数量的期望了(包括大小为1的联通块)
然后考虑如何去掉大小为1的联通块,考虑到一个点只有周围的边都被去掉才会被孤立,可以得到这部分是\(-\sum_{i=1}^{n}2^{m-deg[i]}\)
代码:

#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
void read(int &x) {char ch; bool ok;for(ok=0,ch=getchar(); !isdigit(ch); ch=getchar()) if(ch=='-') ok=1;for(x=0; isdigit(ch); x=x*10+ch-'0',ch=getchar()); if(ok) x=-x;
}
#define rg register
const int maxn=1e6+1,mod=1e9+7;
int dfn[maxn],id,ans,cnt,n,m,pre[maxn*4],nxt[maxn*4],h[maxn],deg[maxn];
int mi(int a,int b)
{int ans=1;while(b){if(b&1)ans=1ll*ans*a%mod;b>>=1,a=1ll*a*a%mod;}return ans;
}
void add(int x,int y)
{pre[++cnt]=y,nxt[cnt]=h[x],h[x]=cnt;pre[++cnt]=x,nxt[cnt]=h[y],h[y]=cnt;
}
void dfs(int x,int fa)
{dfn[x]=dfn[fa]+1;for(rg int i=h[x];i;i=nxt[i])if(pre[i]!=fa){if(!dfn[pre[i]])dfs(pre[i],x);else if(dfn[pre[i]]<dfn[x]){int t=dfn[x]-dfn[pre[i]]+1;ans=(ans+mi(2,m-t))%mod;}}
}
signed main()
{read(n),read(m);for(rg int i=1,x,y;i<=m;i++)read(x),read(y),add(x,y),deg[x]++,deg[y]++;ans=(1ll*mi(2,m)*n%mod-(1ll*mi(2,m-1)*m%mod)+mod)%mod;dfs(1,0);for(rg int i=1;i<=n;i++)ans=(ans-mi(2,m-deg[i])+mod)%mod;printf("%d\n",ans);
}

转载于:https://www.cnblogs.com/lcxer/p/10276390.html

[bzoj5473]仙人掌相关推荐

  1. [bzoj5473] 仙人掌

    Description 有一个n个点,m个边的仙人掌.所谓仙人掌,就是任何一个点至多属于一个环. 每个边有1/2的概率被删掉.问期望剩下多少个边联通块. 所谓边联通块,就是问剩下的边,构成多少个联通块 ...

  2. BZOJ5473: 仙人掌

    传送门 首先,所有连通块的个数的期望再减去每个点孤立的概率就是答案. 设 \(d_i\) 表示 \(i\) 的度数,那么每个点孤立的概率为 \(\frac{1}{2^{d_i}}\) 考虑计算所有连通 ...

  3. Forest Program dfs+tanjar仙人掌

    题目链接 CCPC2019 F题. 题意:给一颗仙人掌树,让你求每一个小环的边的个数,用快速幂即可求解. 思路:第一反应是tanjar乱搞,把每个环上的点取出来,类似于缩点的方法.但是忽然感觉dfs能 ...

  4. 基于卷积神经网络(CNN)的仙人掌图像分类

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 今天我们的目标是建立一个分类器,将图像分类为"仙人掌&q ...

  5. SHOI2008仙人掌图(tarjan+dp)

    Solution 好题啊没的说. 本题需要求出仙人掌的直径,但仙人掌是一个带有简单环的一张图无法直接用树形dp求解,但它有一个好东西就是没有类似环套环的东西,所以我们在处理时就方便了一些. 思路:ta ...

  6. 电脑仙人掌机器人作文_神奇的仙人掌作文400字

    1神奇的仙人掌作文400字 六年级作文 [神奇的仙人掌作文400字] 文 谭茜 地球上有许多神奇的事物,比如松树.芭蕉树.仙人掌--但我觉得最神奇的还是仙人掌. 仙人掌就是一个月不浇水也不会渴死,这与 ...

  7. COJ 0650 绝世难题(一) 可爱的仙人掌

    传送门:http://oj.cnuschool.org.cn/oj/home/problem.htm?problemID=620 绝世难题(一) 可爱的仙人掌 难度级别:E: 运行时间限制:1000m ...

  8. 2019.02.07 bzoj4316: 小C的独立集(仙人掌+树形dp)

    传送门 题意:给出一个仙人掌森林求其最大独立集. 思路:如果没有环可以用经典的树形dpdpdp解决. fi,0/1f_{i,0/1}fi,0/1​表示第iii个点不选/选的最大独立集. 然后fi,0+ ...

  9. [zjoi2017]仙人掌

    前言 谨以此题纪念我第一次参加省选时刚了5h这一题得到0分的经历 题目相关 链接 题目大意 给出仙人掌定义:如果一个无自环无重边无向连通图的任意一条边最多属于一个简单环,我们就称之为仙人掌 给出一个图 ...

最新文章

  1. RDKit toolkit实战一:调用Python API
  2. 团队项目个人进展——Day05
  3. Java复习二 基本数据类型与变量和常量
  4. 怎么设置ppt页面的长度和宽度_将PPT里的字弄很小,PPT就有逼格吗?
  5. 前端开发这么多年,你真的了解浏览器页面渲染机制吗?
  6. Vue使用vue-pull-refresh插件实现下拉刷新
  7. ogm session_带有Hibernate OGM的NoSQL –第一部分:持久化您的第一个实体
  8. 进程控制块PCB(进程描述符)
  9. 重磅!浙大博士两破世界纪录,三年两获浙大竺可桢奖学金!
  10. 10年资深面试官直言:80%人面试Java都会止步于此!
  11. Could not retrieve transaction read-only status from server
  12. 利用ActiveSync制作PC端安装程序(By 无聊客)
  13. 小程序开发工具命令行启动配置
  14. 利用BS爬取单词音标
  15. Day-26 多线程和多进程
  16. 网络OSI七层及各层作用
  17. MAC升级gcc版本
  18. ShaderJoy —— 用 Shader 绘制一只可爱的 “小挠斧” (详细版)【GLSL】
  19. Kubernetes inotify watch 耗尽
  20. java Date与 double 互转

热门文章

  1. 控制搜索引擎蜘蛛的爬行收录
  2. Nginx 配置实现请求转发功能
  3. Loadrunner12.55windows-linux-os安装详细教程
  4. KL散度,JS散度,余弦距离,欧式距离
  5. NV12 和 NV21的区别
  6. comsol-添加线圈几何分析
  7. 单片机:延时函数的理解
  8. fhq-Treap题目记录
  9. python的全局静态变量
  10. JS递归的用法JavaScript递归)