E - Counting Cliques HDU - 5952

题意:

给你n个点,m个边,还有一个s,问这个图中有多少个等于s的点集可以组成一个完全图

题解:

这题。。直接暴力搜索就行
分析复杂度的时候,应该考虑只有1000条边,所以我最多才枚举1000条边,100个点,再加上每次判断最多1e6的时间复杂度,再加一些剪枝,肯定不会超时的
如何避免搜索重复呢?我们规定起点标号小于终点标号,这样边就成为单向边,不会反过来跑,这样实现剪枝且避免重复计算
具体实现为:我依次枚举每个点在完全图内,然后从这个点开始出发跑,每到一个新点,判断他是否与已经存的所有点都有边,都有边说明他也在完全图中,加入,然后继续,直到满足s个点集,然后return,继续跑
详细看代码

代码:

#include<bits/stdc++.h>
#define debug(a,b) printf("%s = %d\n",a,b);
typedef long long ll;
using namespace std;inline int read(){int s=0,w=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();//s=(s<<3)+(s<<1)+(ch^48);return s*w;
}
int n,m,s;
const int maxn=130;
vector<int>vec[maxn];
bool edge[maxn][maxn];
int tot=0;
int vis[maxn];
void dfs(int x){if(x==s){tot++;return ;}int pre=vis[x];for(int i=0;i<vec[pre].size();i++){int f=1;int v=vec[pre][i];for(int j=1;j<=x;j++){//与之前已经加入连通图的点查看是否都有边 if(edge[v][vis[j]]==0){f=0;break;}}if(f==1){vis[x+1]=v;dfs(x+1);} }
}
int main()
{int t;scanf("%d",&t);while(t--){tot=0;memset(edge,0,sizeof(edge));scanf("%d%d%d",&n,&m,&s);for(int i=1;i<=m;i++){int u,v;scanf("%d%d",&u,&v);edge[u][v]=1;edge[v][u]=1;if(u<v) vec[u].push_back(v);else vec[v].push_back(u);}for(int i=1;i<=n;i++){memset(vis,0,sizeof(vis));vis[1]=i;dfs(1);}printf("%d\n",tot);for(int i=1;i<=100;i++)vec[i].clear();}return 0;}

E - Counting Cliques HDU - 5952相关推荐

  1. D - Counting Stars HDU - 7059

    D - Counting Stars HDU - 7059 题解: 长度为n的序列a,有三个操作: 对某个区间进行询问 对于某个区间内的每个数ai,减去ai&(-ai) 对于某个区间内的每个数 ...

  2. HDU 5952 Counting Cliques(2016ACM/ICPC亚洲区沈阳站-重现赛)

    题目分析 这道题看样子没有什么办法,主要就是有策略的暴力,因为每个点连接的点不超过20个,那么就可以直接进行暴力,但是这样会有很多重复,因此需要剪枝,具体情况就是每次搜过一个点之后就把这个点连接的所有 ...

  3. Counting Intersections HDU - 5862

    http://acm.hdu.edu.cn/showproblem.php?pid=5862 将竖线(y1 y2 x)拆为两个点 分别在y1 y2+1高度更新x位置 x轴用线段树维护 对于横线(x1 ...

  4. Counting Divisors HDU - 6069

    设n=p_1^{c_1}p_2^{c_2}...p_m^{c_m}n=p​1​c​1​​​​p​2​c​2​​​​...p​m​c​m​​​​,则d(n^k)=(kc_1+1)(kc_2+1)...( ...

  5. layui删除后刷新表格_LayUi前端框架删除数据缓存问题(解决删除后刷新页面内容又会显示问题)...

    [HDOJ5952]Counting Cliques(DFS,剪枝) 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5952 题意:求图中规模为s的团的 ...

  6. 2016ICPC沈阳站

    2016ICPC沈阳站 题号 题目 知识点 难度 A Thickest Burger 贪心 签到 B Relative atomic mass 贪心 签到 C Recursive sequence 矩 ...

  7. 2016_shengyang_onsite

    5948 Thickest Burger 签到,a+b+max(a,b) 5949 Relative atomic mass 签到,数组+统计一下 5950 Recursive sequence 矩阵 ...

  8. KDD 2021多个奖项出炉:斯坦福博士摘得学位论文奖,北航校友胡侠获新星奖

    视学算法报道 机器之心编辑部 在 KDD 2021 线上开幕之前,多个奖项已正式公布.斯坦福博士 Aditya Grover 获得了学位论文奖,北航校友 Xia "Ben" Hu ...

  9. 《题目与解读》红书 训练笔记目录《ACM国际大学生程序设计竞赛题目与解读》

    虽然2012年出版的老书了,但是是由三次世界冠军的上海交大ACM队出版的书籍,选择的题目是ACM经典中的经典,书中有非常详细的题解,可以学到很多东西,值得一刷. 目录 第一部分 第一章 数学 1.1 ...

最新文章

  1. android用什么包管理器,android – 包管理器已经死了
  2. idea 升级到2020后 无法启动_i.MXRT软复位后无法从32MB Flash启动?
  3. arguments使用
  4. 时间处理总结(二)oracle
  5. [js] 代码中如果遇到未定义的变量,会抛出异常吗?程序还会不会继续往下走?
  6. 建立唯一索引后mysql策略_【MySQL】MySQL索引背后的之使用策略及优化【转】
  7. mysql返回对象_使用mysql_fetch_object()以对象的形式返回查询结果
  8. python之地基(四)
  9. Jupyter notebook 修复
  10. 中兴机顶盒服务器地址大全,中兴机顶盒网络设置无线路由器教程
  11. Unity2D入门(一):编辑素材、绘制地图
  12. 随记:STM32L053LL库LPUART串口DMA接收数据
  13. FAQ04【ElastiSearch】报错:org.elasticsearch.discovery.MasterNotDiscoveredException异常解决
  14. java数据之头尾链表
  15. html5考试总结300字,考试总结与反思300字
  16. Qt 自定义鼠标控制窗口移动
  17. 网络中常说的“丢包”是什么?—Vecloud微云
  18. Pixel修改kernel内核调试
  19. java定义长方体类cuboid_Java实验指导书
  20. sql行转列三个方法

热门文章

  1. 只有学霸才懂的学习技巧,看完脑洞大开,绝对涨姿势!
  2. 机器学习资料第3版,助你继续成长!
  3. Excel有哪些需要熟练掌握而很多人不会的技能!
  4. 《SAS编程与数据挖掘商业案例》学习笔记之十二
  5. c语言中把每个字母向前移1位,C语言:将字符串中的前导*号全部移到字符串的尾部。...
  6. android自定义金额输入键盘_Android 自定义输入支付密码的软键盘实例代码
  7. androidstudio学习总结_Android 开发工程师自述:2年的开发,我总结了7条经验
  8. mysql的查表语句_mysql查表语句_MySQL
  9. idea怎么把代码放到git_在IDEA中如何初始化Git,把项目推送到Git上
  10. future.cancel不能关闭线程_多线程与高并发笔记