uva 193
来源:互联网 发布:linux怎么退出文本编辑 编辑:程序博客网 时间:2024/05/04 18:39
题意:给你一张图染色。只有黑白两种,相连的点是不能都是黑色的(白色的可以),问你染黑色的最大数,并输出染黑色的点
#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int MAXN = 110;int m,n,k;int graph[MAXN][MAXN];int color[MAXN];bool vis[MAXN][MAXN];int blackNodes;int maxblackNodes;int ans[MAXN];void dfs(int cur,int blacks){int i,j;if (cur > n){if (blacks > maxblackNodes){maxblackNodes = blacks;for ( i = 0 ; i <= n ; i++)ans[i] = color[i];}return ;}bool flag = true ;for (i =1 ; i <= n; i++) //判断这个点如果要染黑是否会冲突{if (graph[cur][i] && color[i] == 1){flag = false;break;}}if (blacks + n - cur + 1 <= maxblackNodes) //减枝return ;if (flag){color[cur] = 1 ;dfs(cur+1,blacks+1);color[cur] = 0 ;}dfs(cur+1,blacks);}int main(){int i,j;cin>>m;while (m--){memset(graph,0,sizeof(graph));memset(color,0,sizeof(color));memset(ans,0,sizeof(ans));maxblackNodes = 0;cin>>n>>k;for(i = 0; i < k; i++){int iEdge,oEdge;cin>>iEdge>>oEdge;graph[iEdge][oEdge] = graph[oEdge][iEdge] = 1 ;}dfs(1,0);cout<<maxblackNodes<<endl;bool first = true;for (int i = 1; i <= n; i++){if (ans[i] == 1) {if(first)first = false;else cout<<" ";cout<<i;}}cout<<endl;}return 0 ;}
- UVA 193
- uva 193
- uva 193
- uva 193 - Graph Coloring
- UVa 193 - Graph Coloring
- uva 193 - Graph Coloring
- UVa 193 - Graph Coloring
- UVA 193 图着色
- uva 193 - Graph Coloring
- UVa 193 - Graph Coloring
- UVA 193 Graph Coloring
- uva 193 Graph Coloring
- uva 193 Graph Coloring
- UVa:193 Graph Coloring
- UVa 193 - Graph Coloring
- UVA 193 - Graph Coloring
- uva 193(回溯)
- uva--193+dfs
- SkipList 跳表
- 项目总结
- 关于驱动程序编译的makefile
- 【入门精选】cocos2d-x从Hello World开始
- hdu 1286 找新朋友(欧拉函数)
- uva 193
- iOS UIControl 几个事件的说明
- C语言全局变量那些事儿笔记
- eclipse下运行web项目设置外部浏览器中浏览
- delphi ADOQuery多线程查询
- mysql创建触发器报错
- hdu-4632-Palindrome subsequence DP&回文字串
- HTTP/HTTPS抓包工具——自动生成主流编程代码
- Python 3.3 中GUI的方案:PyQT+Eric