正题

题目链接:https://www.luogu.com.cn/problem/CF11D


题目大意

给出nnn个点mmm条边的一张简单无向图,求它的简单环的个数。

1≤n≤191\leq n\leq 191≤n≤19


解题思路

首先算重的问题很麻烦但也是解决这题的关键。

因为防止算重那么我们就只考虑在每个环编号最小的节点统计一次。

枚举一个起点,然后后面就只走编号大于其的节点用状压计算方案数即可。

时间复杂度O(2nn2)O(2^nn^2)O(2nn2)


code

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const ll N=19;
ll n,m,f[N][1<<N],ans;
bool a[N][N];
signed main()
{scanf("%lld%lld",&n,&m);for(ll i=1,x,y;i<=m;i++){scanf("%lld%lld",&x,&y);x--;y--;a[x][y]=a[y][x]=1;}ll MS=(1<<n),pre=0;for(ll p=0;p<n;p++){pre|=(1<<p);for(ll s=0;s<MS;s++){if(s&pre)continue;for(ll i=0;i<n;i++)f[i][s]=0;}f[p][0]=1;for(ll s=0;s<MS;s++){if(s&pre)continue;for(ll i=p;i<n;i++){if(!f[i][s])continue;for(ll j=p+1;j<n;j++){if((s>>j)&1)continue;if(a[i][j])f[j][s|(1<<j)]+=f[i][s];}if(a[i][p]&&s!=(s&-s))ans+=f[i][s];}}}printf("%lld\n",ans/2);return 0;
}

CF11D-A Simple Task【状压dp】相关推荐

  1. CF11D A Simple Task(状压DP)

    \(solution:\) 思路大家应该都懂: 状压DP:\(f[i][j]\),其中 \(i\) 这一维是需要状压的,用来记录19个节点每一个是否已经走过(走过为 \(1\) ,没走为 \(0\) ...

  2. 【状压DP】哈密顿回路问题

    [状压DP]哈密顿回路问题 lzq同学在我准备午睡的时候发了一道蓝桥杯的题目给我,是哈密顿回路的.第一次看的时候是想DFS+双向搜索优化减小搜索树规模,然后写烂了(如果有大佬用搜索优化写出来了麻烦教教 ...

  3. 【思维题 状压dp】APC001F - XOR Tree

    可能算是道中规中矩的套路题吧-- Time limit : 2sec / Memory limit : 256MB Problem Statement You are given a tree wit ...

  4. ACM-ICPC 2018 南京赛区网络预赛 E AC Challenge 状压DP

    题目链接: https://nanti.jisuanke.com/t/30994 Dlsj is competing in a contest with n (0 < n \le 20)n(0& ...

  5. ACM-ICPC 2018 南京赛区网络预赛 E AC Challenge(状压dp)

    Dlsj is competing in a contest with n (0 < n \le 20)n(0<n≤20) problems. And he knows the answe ...

  6. ACM-ICPC 2018 南京赛区网络预赛 E. AC Challenge 状压dp

    Dlsj is competing in a contest with n(0<n≤20)n (0 < n \le 20)n(0<n≤20) problems. And he kno ...

  7. POJ 1038 Bugs Integrated Inc (复杂的状压DP)

    \(POJ~1038~~*Bugs~Integrated~Inc:\) (复杂的状压DP) \(solution:\) 很纠结的一道题目,写了大半天,就想练练手,结果这手生的.其实根据之前那道炮兵阵地 ...

  8. codeforces 8C. Looking for Order 状压dp

    题目链接 给n个物品的坐标, 和一个包裹的位置, 包裹不能移动. 每次最多可以拿两个物品, 然后将它们放到包里, 求将所有物品放到包里所需走的最小路程. 直接状压dp就好了. #include < ...

  9. UVA10296 Jogging Trails(中国邮递员问题)(欧拉回路、一般图最大权匹配 / 状压DP)

    整理的算法模板合集: ACM模板 目录 思路 UVA10296 Jogging Trails 题目翻译: 给你n个点,m条无向边,每条边有一定的距离数值,构造成一个连通图.问从任意一点出发,遍历所有的 ...

  10. POJ 2411 Mondriaan‘s Dream(最清楚好懂的状压DP讲解)(连通性状态压缩DP)

    poj 2411 Mondriaan's Dream(最清晰的状压DP解析) 闫氏DP大法好 我们这里是一列一列地来,因为是一个棋盘性的状态压缩DP,从哪个方向都一样 摆放的小方格总方案数 等价于 横 ...

最新文章

  1. 支架预压弹性变形值计算_桥梁支架的预压方法与流程
  2. postgres中分组后拼接多行
  3. php常见问题及其解决方案,PHP开源开发框架ZendFramework使用中常见问题说明及解决方案...
  4. ubuntu20.04自带python版本_替换 ubuntu 自带的python版本
  5. mysql表名怎么拼接_mysql必知必会(一)
  6. ECStore在Win环境下如何运行CMD命令
  7. requesbodys.java_这个requestBody的正确swagger-annotation是什么?
  8. 国内主要的ubuntu 源
  9. Redis实战pdf
  10. Windows下Appium环境搭建小结
  11. 使用夜神模拟器完美破解(反编译)微信小程序以及问题汇总
  12. 课设-基于51单片机的智能小车(循迹+避障+APP控制)
  13. oracle查询日期当天,oracle获取今天时间数据
  14. PS通道高反差保留计算人物磨皮技巧
  15. window10关闭磁盘bitlocker加密
  16. 域控服务器怎么开策略,组策略(域和域服务的搭建)
  17. Mac 使用 之 Permission denied XXX
  18. charles的基本介绍与使用
  19. 宇视大屏蓝屏排查步骤
  20. 简单理解2台主机数据通信过程

热门文章

  1. java aspose重叠_Aspose.Words - 在特定位置合并两个文档
  2. c语言不通类型指针转换,C语言之强制类型转换与指针--#define DIR *((volatile unsigned int *) 0x0022)...
  3. linux系统管理命令使用,Linux系统管理使用之基本命令(1)
  4. 下面选项能正确表示JAVA_模拟试题2
  5. 使有用计算机不注意卫生,保护眼睛注意细节有哪些
  6. element 方法返回的boolean被当成字符串了_13个需要知道的方法:使用 JavaScript 来操作 DOM...
  7. c++11 string u8_深入理解C++11:C++11新
  8. fcn网络训练代码_另辟蹊径,中科院自动化所等首次用图卷积网络解决语义分割难题...
  9. PHP防QQ列表右划,react native 实现类似QQ的侧滑列表效果
  10. [C++11]final关键字的使用