POJ 2989 All Friends (极大团数量 + 全局变量局部变量)
2016-02-28 14:53
369 查看
点击打开链接
题意:给出n个点,然后给出m组相邻的点,问极大团的数量。
核心是不变的,还是注意细节,细节如果出错,就会出现一些奇怪的结果。还有要知道怎么样做可以避免出错。
这道题三个集合里放的编号都应该是从1开始的,因为题设编号就是从1开始的。这样一定不会出错,事实证明从0开始的确不可以。
如果一个变量既定义了全局变量,又定义了局部变量,那么就可以看成是一个全局变量和一个局部变量,两者没有关系。
全局变量是在整个程序中通用,局部变量除了只在所在的子函数内使用之外,每一次回溯的时候都会回到之前的那个值。所以,dfs中的u,v必须是局部变量。
还有对于dfs,要从本质上去理解。
回溯的时候,some[d][i]=0,在下一次遇到的时候,会自动continue,相当于这个点被去掉了。
题意:给出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 150 using namespace std; int sum, n, m, x, y, tsn, tnn; int some , all , none , re ; 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; }
相关文章推荐
- 容器的allocator(容器配置器)(一)
- sass(混合宏vs继承vs占位符)
- MFC中,编译器无法识别类等问题的另一种情况。
- LA 5009 三分
- sass继承 %占位符placeholder
- UVa--437 The Tower of Babylon(dp)
- find命令中参数perm的用法
- UVa 1583 - Digit Generator
- BZOJ_P1072 [SCOI2007]排列perm(状态压缩动态规划)
- ubuntu15.10 配置tftp
- Linux磁盘分区及要求
- ASP.NET中使用Nhibernate
- Linux内核的中断机制
- BZOJ 2154: Crash的数字表格
- Toefl作文
- sass混合宏
- 指针啊排序 手打娱乐
- 面试题目——快速排序
- 用keras小试CNN卷积神经网络应用于人脸识别
- 构建之法随笔