题目连接: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)的更多相关文章

  1. hdu 5094 Maze 状态压缩dp+广搜

    作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4092176.html 题目链接:hdu 5094 Maze 状态压缩dp+广搜 使用广度优先 ...

  2. HDU 3001(状态压缩dp)

    状态压缩dp的第一题! 题意:Mr ACMer想要进行一次旅行,他决定访问n座城市.Mr ACMer 可以从任意城市出发,必须访问所有的城市至少一次,并且任何一个城市访问的次数不能超过2次.n座城市间 ...

  3. hdu 4856 Tunnels 状态压缩dp

    Tunnels Time Limit: 3000/1500 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem ...

  4. HDU 3001【状态压缩DP】

    题意: 给n个点m条无向边. 要求每个点最多走两次,要访问所有的点给出要求路线中边的权值总和最小. 思路: 三进制状态压缩DP,0代表走了0次,1,2类推. 第一次弄三进制状态压缩DP,感觉重点是对数 ...

  5. hdu 5045 Contest(状态压缩DP)

    题解:我们使用一个二位数组dp[i][j]记录进行到第i个任务时,人组合为j时的最大和(这里的j我们用二进制的每位相应一个人). 详细见代码: #include <iostream> #i ...

  6. hdu 3091 Necklace 状态压缩dp *******

    Necklace Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 327680/327680 K (Java/Others)Total ...

  7. hdu 4628 Pieces 状态压缩dp

    Pieces Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total S ...

  8. HDU 2167 Pebbles 状态压缩dp

    Pebbles Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Sub ...

  9. HDU 1074 (状态压缩DP)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1074 题目大意:有N个作业(N<=15),每个作业需耗时,有一个截止期限.超期多少天就要扣多少 ...

  10. HDU 4511 (AC自动机+状态压缩DP)

    题目链接:  http://acm.hdu.edu.cn/showproblem.php?pid=4511 题目大意:从1走到N,中间可以选择性经过某些点,比如1->N,或1->2-> ...

随机推荐

  1. android 应用架构随笔五(ActionBar与侧滑菜单DrawerLayout)

    ActionBar(V7)的添加非常简单,只需要在AndroidManifest.xml中指定Application或Activity的theme是Theme.Holo或其子类就可以了,在Androi ...

  2. python False

    None 空字符串 空列表 空元组 空字典 false为False

  3. SQL学习记录

    一些最重要的 SQL 命令 SELECT - 从数据库中提取数据 UPDATE - 更新数据库中的数据 DELETE - 从数据库中删除数据 INSERT INTO - 向数据库中插入新数据 CREA ...

  4. uboot启动参数

    bootcmd=nand read.jffs2 0x30007FC0 kernel; bootm 0x30007FC0bootdelay=2baudrate=115200ethaddr=08:00:3 ...

  5. NFine - 全球领先的快速开发平台 Dapper Chloe

    http://www.nfine.cn/ 技术交流群:549652099 出处:http://www.cnblogs.com/huanglin/ 分享一个轻型ORM--Dapper选用理由 Chloe

  6. Temporary TempDB Tables [AX 2012]

    Temporary TempDB Tables [AX 2012] 1 out of 4 rated this helpful - Rate this topic Updated: November ...

  7. textarea输入框限制字数(JS)

    第一种: <textarea onkeyup="checkLen(this)"></textarea> <div>您还可以输入 <span ...

  8. Android 仿美团网,大众点评购买框悬浮效果之修改版

    转帖请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/17761431),请尊重他人的辛勤劳动成果,谢谢! 我之前写 ...

  9. 如何在VS2013中新建WindowsService定时任务

    http://jingyan.baidu.com/article/cd4c2979e9330d756f6e6070.html 很多人都想做定时任务,但是没有不知道如何下手,现在就用WindowsSer ...

  10. HDU 4035:Maze(概率DP)

    http://acm.split.hdu.edu.cn/showproblem.php?pid=4035 Maze Special Judge Problem Description   When w ...