HDU 4997 Biconnected (状态压缩DP)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4997
题意:一个n个点的完全图中去掉一些边。求这个图有多少个子图是边双联通的。(就是去掉任意一条边之后仍是联通的)
思路:

const int mod=1000000007;
const int N=11; int conn[1<<N],disc[1<<N],edge[1<<N];
int bico[1<<N],unco[1<<N],meth[1<<N][1<<N];
int n,m;
int a[N][N]; void cal(int st)
{
edge[st]=0;
int i,j,k;
for(i=0;i<n;i++) if(st&(1<<i)) for(j=i+1;j<n;j++)
{
if(st&(1<<j)) edge[st]+=!a[i][j];
}
conn[st]=(1LL<<edge[st])%mod;
int lowbit=st&(-st);
int rst=st^lowbit;
if(rst)
{
for(i=(rst-1)&rst;;i=(i-1)&rst)
{
int nst=i^lowbit;
conn[st]-=(i64)conn[nst]*((1LL<<edge[st^nst])%mod)%mod;
conn[st]%=mod;
if(i==0) break;
}
}
meth[0][st]=1;
for(i=(st-1)&st;i;i=(i-1)&st)
{
i64 tmp=0;
int lowbit=i&(-i);
int rst=i^lowbit;
for(j=rst;;j=(j-1)&rst)
{
int k=j^lowbit;
tmp+=(i64)meth[i^k][st^i]*conn[k]%mod*(edge[st^i^k]-edge[st^i]-edge[k])%mod;
tmp%=mod;
if(j==0) break;
}
meth[i][st^i]=tmp;
}
bico[st]=conn[st];
if(rst)
{
for(i=(rst-1)&rst;;i=(i-1)&rst)
{
int nst=i^lowbit;
bico[st]-=(i64)bico[nst]*meth[st^nst][nst]%mod;
bico[st]%=mod;
if(i==0) break;
}
}
} int main()
{ int T;
scanf("%d",&T);
while(T--)
{
clr(a,0);
scanf("%d%d",&n,&m);
int i;
for(i=1;i<=m;i++)
{
int u,v;
scanf("%d%d",&u,&v);
u--; v--;
a[u][v]=a[v][u]=1;
}
for(i=0;i<(1<<n);i++)
{
cal(i);
}
int ans=bico[(1<<n)-1];
if(ans<0) ans+=mod;
printf("%d\n",ans);
}
}
HDU 4997 Biconnected (状态压缩DP)的更多相关文章
- hdu 5094 Maze 状态压缩dp+广搜
作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4092176.html 题目链接:hdu 5094 Maze 状态压缩dp+广搜 使用广度优先 ...
- HDU 3001(状态压缩dp)
状态压缩dp的第一题! 题意:Mr ACMer想要进行一次旅行,他决定访问n座城市.Mr ACMer 可以从任意城市出发,必须访问所有的城市至少一次,并且任何一个城市访问的次数不能超过2次.n座城市间 ...
- hdu 4856 Tunnels 状态压缩dp
Tunnels Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem ...
- HDU 3001【状态压缩DP】
题意: 给n个点m条无向边. 要求每个点最多走两次,要访问所有的点给出要求路线中边的权值总和最小. 思路: 三进制状态压缩DP,0代表走了0次,1,2类推. 第一次弄三进制状态压缩DP,感觉重点是对数 ...
- hdu 5045 Contest(状态压缩DP)
题解:我们使用一个二位数组dp[i][j]记录进行到第i个任务时,人组合为j时的最大和(这里的j我们用二进制的每位相应一个人). 详细见代码: #include <iostream> #i ...
- hdu 3091 Necklace 状态压缩dp *******
Necklace Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 327680/327680 K (Java/Others)Total ...
- hdu 4628 Pieces 状态压缩dp
Pieces Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Total S ...
- HDU 2167 Pebbles 状态压缩dp
Pebbles Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Sub ...
- HDU 1074 (状态压缩DP)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1074 题目大意:有N个作业(N<=15),每个作业需耗时,有一个截止期限.超期多少天就要扣多少 ...
- HDU 4511 (AC自动机+状态压缩DP)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4511 题目大意:从1走到N,中间可以选择性经过某些点,比如1->N,或1->2-> ...
随机推荐
- [php] How to debug PHP in the terminal
Here I use Netbeans, xdebug to debug the PHP in the terminal of Ubuntu. 1. you have to install the x ...
- Workspace Cloning / Sharing in Jenkins
http://lwandersonmusings.blogspot.com/2011/06/workspace-cloning-sharing-in-hudson.html What's insi ...
- 三层架构和MVC模式
目录[-] 1.三层架构 2.MVC 2.1 标准的MVC(Model-View-Controller) 2.2 Web MVC 3.三层架构和MVC的区别与联系 1.三层架构 三层架构(3-tier ...
- SQL2005中的事务与锁定(二)- 转载
------------------------------------------------------------------------ -- Author : HappyFlyStone ...
- 操作系统双语阅读 - Schedulers调度器2
Most processes can be described as either I/O bound or CPU bound. 大多数进程都可以描述为IO绑定或者CPU绑定. An I/O-bou ...
- android 项目学习随笔二十(屏幕适配)
1.图片适配 放入相同名称的资源文件,机器根据不同分辨率找相近的资源 240*320 ldpi 320*480 mdpi 480*800 hdpi 720*1280 xhdpi 2.布局适配 在不同的 ...
- android 学习随笔一(配置调试与基础)
一.基础与开发环境安装配置 Memory Options: VM Heap表示每个应用所能占用的最大内存. Android 项目目录结构 SRC java源码 android.jar 导入jar才能使 ...
- divcss5布局
一.ie9不支持line-height字体垂直居中兼容问题 原因:CSS中使用了中文字体,而中文字体使用汉字.如:font-family:"微软雅黑" 1.将中文字体汉字 ...
- lamp环境编译(apache2.4.7 php5.4.25 mysql 5.5.23)
环境要求 gcc.gcc-c++.cmake.bison(可能)支持 1.yum install gcc gcc-c++ cmake bison 2.修改yum配置,达到搜索本地设置 移走或改名/et ...
- Linux下创建与解压tar, tar.gz和tar.bz2文件及压缩率对比 | 沉思小屋
刚 在qq群里面一位仁兄问到文件压缩的命令,平时工作中大多用解压缩命令,要是遇到压缩就现查(这不是一个好习惯),于是整理下Linux下创建与解压 zip.tar.tar.gz和tar.bz2文件及他们 ...