hdu 5952 Counting Cliques
来源:互联网 发布:疯狂的美工助手注册码 编辑:程序博客网 时间:2024/05/18 09:29
http://acm.split.hdu.edu.cn/showproblem.php?pid=5952
给出一个无向图,求有多少个子团,子团就是集合中的点到其他点都是直接相连的
这道题虽然是无向图,但在建图的时候需要看作是有向图,且要保证起点小于终点,然后再dfs去找有多少个团。将起点小于终点的原因是为了防止1234和2134这种类型的重复。
#include<iostream> #include<cstring> #include<iomanip> #include<algorithm> #include<cmath> #include<cstdio> #include<queue> #include<vector>using namespace std; vector<int> st[111];bool ma[111][111];int ans;int s;void dfs(int u,int * vis,int siz){if(siz==s){ans++;return ;}bool flag;for(int i=0;i<st[u].size();i++){int ed=st[u][i]; flag=1;for(int j=1;j<=siz;j++){if(!ma[vis[j]][ed]){flag=false;break;}}if(flag){siz++;vis[siz]=ed;dfs(ed,vis,siz);vis[siz]=0;siz--;}}}int main(){ int t; scanf("%d",&t);while(t--) { int po,ed; scanf("%d%d%d",&po,&ed,&s); ans=0; int i; int u,v; memset(ma,0,sizeof(0)); for(i=1;i<=po;i++)st[i].clear(); while(ed--) { scanf("%d%d",&u,&v); if (u>v) swap(u,v); st[u].push_back(v); ma[u][v]=ma[v][u]=1;} for(i=1;i<=po;i++) { int vis[111]; vis[1]=i; dfs(i,vis,1); } printf("%d\n",ans); } return 0; }
阅读全文
0 0
- HDU 5952 - Counting Cliques
- hdu 5952 Counting Cliques
- hdu 5952 Counting Cliques
- hdu 5952 Counting Cliques
- [hdu 5952 Counting Cliques]暴搜
- hdu 5952Counting Cliques(暴搜)
- HDU 5952 Counting Cliques(dfs)
- HDU 5952 Counting Cliques 爆搜
- HDU-5952 Counting Cliques ,爆搜!
- 【HDU 5952 Counting Cliques】& DFS
- HDU 5952 Counting Cliques(dfs)
- HDU 5952 Counting Cliques 暴力搜索
- HDU 5952 Counting Cliques dfs乱搞
- hdu 5952Counting Cliques(dfs优化)
- hdu 5952 Counting Cliques 暴力枚举+优化
- HDU-5952-Counting Cliques(搜索剪枝)
- HDU 5952 Counting Cliques 图DFS
- HDU 5952 Counting Cliques dfs + 思维
- 欢迎使用CSDN-markdown编辑器
- hitTest和pointInside方法
- python difflib 模块
- Android SQLite 的使用(最全的?)
- Spring实战学习笔记(一)
- hdu 5952 Counting Cliques
- IO流学习笔记
- 在使用Jackson出现的一些异常
- 用proteus来玩数字电路与门和其它门
- (碎片代码)Button事件添加监听器
- VBA使用网页判断版本
- Spring Session解决分布式Session问题的实现原理
- Messenger是怎样实现单线程的
- OpenCV3.2.0-----训练数据/分类