POJ 2989 All Friends (极大团数量 + 全局变量局部变量)
来源:互联网 发布:电脑软件编程学校 编辑:程序博客网 时间:2024/06/17 19:11
点击打开链接
题意:给出n个点,然后给出m组相邻的点,问极大团的数量。
核心是不变的,还是注意细节,细节如果出错,就会出现一些奇怪的结果。还有要知道怎么样做可以避免出错。
这道题三个集合里放的编号都应该是从1开始的,因为题设编号就是从1开始的。这样一定不会出错,事实证明从0开始的确不可以。
如果一个变量既定义了全局变量,又定义了局部变量,那么就可以看成是一个全局变量和一个局部变量,两者没有关系。
全局变量是在整个程序中通用,局部变量除了只在所在的子函数内使用之外,每一次回溯的时候都会回到之前的那个值。所以,dfs中的u,v必须是局部变量。
还有对于dfs,要从本质上去理解。
回溯的时候,some[d][i]=0,在下一次遇到的时候,会自动continue,相当于这个点被去掉了。
#include<cstring>#include<string>#include<cstdio>#include<iostream>#include<cmath>#include<algorithm>#define N 150using namespace std;int sum, n, m, x, y, tsn, tnn;int some[N][N], all[N][N], none[N][N], re[N][N];void dfs(int d, int an, int sn, int nn){ int u, v; if (sum > 1000) return; if (sn == 0 && nn == 0) { sum++; } u = some[d][1]; for (int i = 1; i <= sn; i++) { v = some[d][i]; if (re[u][v]) continue; for (int j = 1; j <= an; j++) all[d+1][j] = all[d][j]; all[d+1][an+1] = v; tsn = 0; tnn = 0; for (int j = 1; j <= sn; j++) if (re[v][some[d][j]]) some[d+1][++tsn] = some[d][j]; for (int j = 1; j <= nn; j++) if (re[v][none[d][j]]) none[d+1][++tnn] = none[d][j]; dfs(d+1, an+1, tsn, tnn); some[d][i] = 0; none[d][++nn] = v; }}int main(){ while (~scanf("%d%d", &n, &m)) { memset(re, 0, sizeof(re)); for (int i = 1; i <= m; i++) { scanf("%d%d", &x, &y); re[x][y] = 1; re[y][x] = 1; } sum = 0; for (int i = 1; i <= n; i++) some[1][i] = i; dfs(1, 0, n, 0); if (sum > 1000) printf("Too many maximal sets of friends.\n"); else printf("%d\n", sum); } return 0;}
0 0
- POJ 2989 All Friends (极大团数量 + 全局变量局部变量)
- POJ - 2989 All Friends 极大团
- poj 2989 All Friends(Born_Kerbosch求极大团个数)
- 【POJ 2989】 All Friends【Born_Kerbosch求极大团个数】
- POJ-2989-All Friends 极大团算法 Bron-Kerbosch及其改进
- POJ 2989 Bron-Kerbosch算法 极大团数量
- 局部变量和全局变量(成员变量)
- 全局变量、局部变量(auto局部变量)、静态全局变量、静态局部变量的区别
- 全局变量、局部变量(auto局部变量)、静态全局变量、静态局部变量的区别
- 局部变量,全局变量,静态全局变量
- SQL中的全局变量和局部变量(@@/@)
- static--修饰(局部变量、全局变量、函数)
- 全局变量?局部变量?
- 全局变量与局部变量
- 局部变量与全局变量
- 全局变量、局部变量、extern
- 全局变量与局部变量
- 全局变量与局部变量
- UVa--437 The Tower of Babylon(dp)
- LA 5009 三分
- MFC中,编译器无法识别类等问题的另一种情况。
- 容器的allocator(容器配置器)(一)
- sass(混合宏vs继承vs占位符)
- POJ 2989 All Friends (极大团数量 + 全局变量局部变量)
- sass笔记之开始
- mysql 5.5中的半同步复制
- 新生项目总结之---组织管理与文档的书写
- 容器配置器(allocator)(二)
- Base64 加密之中文乱码
- Java中被你忽视的四种引用
- 关于设置浮动改变行内元素display属性的问题
- sass插值