UVA193
来源:互联网 发布:白板软件免费下载 编辑:程序博客网 时间:2024/06/07 06:59
题意:使相连的两点都不能为黑色,求所染的色中黑色的数目最大
思路:先将所有点都染为白色,然后再进行染黑色,如果染黑色,则进行下一次递归时,要记得数目num+1,如果没有的话,就不要+1;
#include<stdio.h>#include<string.h>#define N 105int color[N], black[N];int map[N][N];int Max, n, a, b, num;int dfs(int x, int cnt){int flag = 1;if (cnt > Max){Max = cnt;for(int i = 1; i <= n; i++)black[i] = color[i];}if (cnt + n - x + 1 <= Max)return 0;for(int i = 1; i <= n; i++)if (map[x][i] == 1 && color[i] == 1){flag = 0;break;}if (flag){color[x] = 1;dfs(x + 1, cnt + 1);color[x] = 0;}dfs(x + 1, cnt);return 0;}int main(){int cas, m;scanf("%d", &cas);while (cas--){scanf("%d%d", &n, &m);memset(map, 0, sizeof(map));memset(color, 0, sizeof(color));memset(black, 0, sizeof(black));for(int i = 0; i < m; i++){scanf("%d%d", &a, &b);map[a][b] = 1;map[b][a] = 1;}Max = 0, num = 0;dfs(1, 0);printf("%d\n", Max);for(int i = 1; i <= n; i++){if (black[i]){++num; printf("%d",i); if (num == Max) printf("\n"); else printf(" "); }}}return 0;}
- UVa193
- UVA193
- uva193
- UVA193
- uva193 - Graph Coloring
- uva193继续回溯!!
- [回溯]Graph Coloring UVA193
- UVA193图染色问题
- UVa193图染色
- 网络游戏程序员须知 UDP vs TCP
- Flash Player 8 中的安全性更改
- 编写高质量代码:改善C++程序的150个建议(十一)
- 网络游戏程序员须知 收包与发包
- ZOJ 3693 Happy Great BG 解题报告
- UVA193
- 高版本数据库在低版本数据库恢复时的实验
- Milk2解题报告
- Day1 itheima_xml基础
- CSS:用SASS(SCSS)实现栅格系统
- POJ 3259/ SOJ 2751: Wormholes
- hdu2546 饭卡 (01背包)
- UVA208
- Java框架学习笔记——初识Spring之简述