HDU5952 Counting Cliques(思维+DFS)
来源:互联网 发布:游戏公司程序员绩效 编辑:程序博客网 时间:2024/06/01 21:14
题目大意:
对于每个s点完全子图,如果i点在子图中,那么就枚举与i有边的其他点,每加入一个点,就判断一下是否和其他已加入的点有边,如果是就可以加入,否则不能加。
思路:
对于每个s点完全子图,如果i点在子图中,那么就枚举与i有边的其他点,每加入一个点,就判断一下是否和其他已加入的点有边,
如果是就可以加入,否则不能加。
建图的时候从小的节点指向大的节点(单向边),因为最后要找的是一个无向完全图,在无向完全图中肯定可以找到一条从小节点依次
走到到大节点的有向路:比如1->2->3这样的路,边的双向信息用另一个数组存一下就行了
这样就减少了大量不必要的计算,而且不会重复,因为你在一个无向完全图里只可能找到一个,v1 < v2 < v3 ... < vx
这样的偏序关系的路,不可能再出现例如v2 < v1 < v3 < ... < vx这种路,因为这么多点大小的偏序关系是唯一的,确定了一次,以后都
不会重复了,连标记去重都不用,真巧妙!
#include<bits/stdc++.h>using namespace std;int t, n, m, s, st[105], tp, ans;bool mp[105][105], vis[105];vector<int> v[105];bool check(int x){ for(int i = 0; i < tp; i++) if(!mp[x][st[i]]) return false; return true;}void dfs(int u){ if(tp == s) { ans++; return ; } for(int i = 0; i < v[u].size(); i++) { int to = v[u][i]; if(vis[to]) continue; if(check(to)) { vis[to] = true; st[tp++] = to; dfs(to); vis[to] = false; tp--; } }}int main(){ scanf("%d", &t); while(t--) { scanf("%d%d%d", &n, &m, &s); for(int i = 1; i <= 100; i++) v[i].clear(); memset(mp, false, sizeof(mp)); for(int i = 0; i < m; i++) { int from, to; scanf("%d%d", &from, &to); v[min(from, to)].push_back(max(from, to)); mp[from][to] = mp[to][from] = true; } ans = tp = 0; for(int i = 1; i <= n; i++) { st[tp++] = i; vis[i] = true; dfs(i); tp--; vis[i] = false; } printf("%d\n", ans); } return 0;}
阅读全文
0 0
- HDU5952 Counting Cliques(思维+DFS)
- hdu5952 Counting Cliques DFS
- hdu5952 Counting Cliques DFS
- HDU5952 Counting Cliques(DFS+剪枝)
- HDU5952 Counting Cliques (dfs)
- hdu5952 Counting Cliques
- hdu5952 Counting Cliques(爆搜)
- HDU5952 Counting Cliques 沈阳赛
- hdu5952 Counting Cliques(搜索)
- HDU5952 Counting Cliques 【搜索剪枝】
- HDU 5952 Counting Cliques dfs + 思维
- hdu5952 Counting Cliques 2016 沈阳 1005 vector还是慢
- hdu5952-搜索&剪枝&别人都A系列&技巧-Counting Cliques
- hdu_5952 Counting Cliques(dfs,优化)
- HDU 5952 Counting Cliques(dfs)
- 【HDU 5952 Counting Cliques】& DFS
- HDU 5952 Counting Cliques(dfs)
- HDU 5952 Counting Cliques dfs乱搞
- 统计一个数字在排序数组中出现的次数。
- HDU 6047 Maximum Sequence
- Sky 数
- 线段树优化DP [Poi2010]Monotonicity 2
- CodeForces
- HDU5952 Counting Cliques(思维+DFS)
- JWT 进阶 -- JJWT
- 将本地代码库push到GitHub上的超详细操作
- Node.js一些知识点(操作步骤)
- SDUT-数据结构实验之栈四:括号匹配
- 动态规划之硬币面值组合问题
- Linux进程与线程的区别
- Memory and Scores CodeForces
- day03