Graph Coloring&&http://poj.org/problem?id=1419最大团问题
2013-04-23 18:26
579 查看
好久没做题了,做起题来感觉各种没感觉,简直弱爆了,
先说下这一题题意:就是给你一个无向图,有黑白两种颜色,让你对该图进行染色,要求任意相邻两点不能为同一种颜色,问你最后可以染多少个黑色的顶点,很显然是让你求最大独立集问题(所求得的该顶点集中任意两点都没有边),而经分析可知最大独立集=相对应完全图补图的最大团
而求最大团很容易想到用子集树来求,只需带一下子集树的模板就行了·~~
AC代码:
先说下这一题题意:就是给你一个无向图,有黑白两种颜色,让你对该图进行染色,要求任意相邻两点不能为同一种颜色,问你最后可以染多少个黑色的顶点,很显然是让你求最大独立集问题(所求得的该顶点集中任意两点都没有边),而经分析可知最大独立集=相对应完全图补图的最大团
而求最大团很容易想到用子集树来求,只需带一下子集树的模板就行了·~~
AC代码:
#include <iostream> #include<string.h> #include<algorithm> #include<cstdio> #define CLR(arr,val) memset(arr,val,sizeof(arr)) #define N 105 using namespace std; bool map ; int n,best ; bool x ; int Maxnum; void in(int &a) { char ch; while((ch=getchar())<'0'||ch>'9'); for( a=0;ch>='0'&&ch<='9';ch=getchar()) a=a*10+ch-'0'; } bool place(int t) { for(int i=1;i<t;++i) if(x[i]&&!map[i][t]) return false; return true; } void dfs(int t,int num) { if(t>n)//边界条件 { Maxnum=num; int k=0; for(int i=1;i<=n;++i) if(x[i]) best[++k]=i; return; } if(place(t))//约束条件 { x[t]=true; dfs(t+1,num+1); } if(num+n-t>=Maxnum) //限界条件 { x[t]=false; dfs(t+1,num); } } int main() { int T; in(T); while(T--) { Maxnum=0; CLR(x,false); int k; in(n),in(k); for(int i=1;i<=n;++i) for(int j=1;j<=n;++j) map[i][j]=true; for(int i=0;i!=k;++i) { int a,b; in(a),in(b); map[a][b]=map[b][a]=false; } dfs(1,0); cout<<Maxnum<<endl; for(int i=1;i<Maxnum;++i) cout<<best[i]<<" "; cout<<best[Maxnum]<<endl; }return 0; }
相关文章推荐
- 独立树Graph Coloring&&http://poj.org/problem?id=1419最大团问题
- 棋盘问题&&http://poj.org/problem?id=1321
- Sumdiv&&http://poj.org/problem?id=1845&&约数和问题
- http://poj.org/problem?id=3356&&dp
- http://poj.org/problem?id=1456&&并查集
- poj 1698 Alice's Chance http://poj.org/problem?id=1698
- Find The Multiple&&http://poj.org/problem?id=1426
- http://poj.org/problem?id=1287&&prim
- 青蛙的约会&&http://poj.org/problem?id=1061
- http://poj.org/problem?id=3628 背包问题还有一个地方没想明白 直接DFS()
- http://poj.org/problem?id=3781&&Nth Largest Value
- Dungeon Master&&http://poj.org/problem?id=2251
- (博客搬迁啦)pku1276多重背包问题(http://poj.org/problem?id=1276)
- http://poj.org/problem?id=2503&&hash
- http://poj.org/problem?id=2239&&Selecting Courses
- http://poj.org/problem?id=2607&&最短路
- 2-sat&&http://poj.org/problem?id=3648
- http://poj.org/problem?id=3264&&RMQ
- http://poj.org/problem?id=1274&&The Perfect Stall
- http://poj.org/problem?id=3984 迷宫问题