uva10004 Bicoloring 黑白染色问题,DFS
来源:互联网 发布:java常用算法有哪些 编辑:程序博客网 时间:2024/04/30 10:33
又是水题,最近切题目只能切出水题。。。orz
给出一个联通图,要求在个点上染上两种颜色,相邻的点颜色不能相同,看能不能染色成功。
用dfs搜索一个点的每条边,着色递归,如果已经染过色的且颜色出现矛盾就退出,用flag优化。
由于是联通图,不用考虑孤立的点或图,就比较容易了。
据说可以用并查集做,额,估计要用加权。。。
代码:
#include <cstdio>#include <cstdlib>#include <cstring>char maze[31][81];void dfs(int x, int y) {maze[x][y] = '#';if (maze[x - 1][y] == ' ')dfs(x - 1, y);if (maze[x][y - 1] == ' ')dfs(x, y - 1);if (maze[x + 1][y] == ' ')dfs(x + 1, y);if (maze[x][y + 1] == ' ')dfs(x, y + 1);}int main() {int n;//freopen("in", "r", stdin);scanf("%d", &n);gets(maze[0]);while (n--) {int i = 0;while (gets(maze[i]) && maze[i][0] != '_') {i++;}//inputbool flag = true;for (int k = 0; k < i; k++)for (int j = 0; flag && j < strlen(maze[k]); j++)if (maze[k][j] == '*') {maze[k][j] = '#';dfs(k, j);//printf("%d %d\n", k, j);flag = false;}//printf("%d %d\n", i, flag);for (int k = 0; k <= i; k++)puts(maze[k]);}//while}
- uva10004 Bicoloring 黑白染色问题,DFS
- UVA10004- Bicoloring(二染色)
- uva10004 Bicoloring 二分图染色
- UVa10004 Bicoloring (dfs水题)
- uva10004 Bicoloring(交叉染色法)
- uva10004 Bicoloring
- UVA10004 - Bicoloring
- DFS黑白染色
- UVa10004 Bicoloring,二分图判定
- UVa10004 Bicoloring(二分图判定)
- UVA - 10004 - Bicoloring(染色问题)
- HDOJ 4751 黑白染色问题
- 黑白图像问题[DFS]
- uva10004(bfs||dfs)
- HDU1829 A Bug's Life dfs黑白染色二分图
- UVA Bicoloring (交叉染色)
- Bicoloring——交叉染色
- uva 10004 Bicoloring(二染色)
- C++中extern “C”含义深层探索
- cuda中模板的使用
- .h和.cpp文件的区别
- socket应用 用C语言编写发送邮件程序
- Java 虚拟机学习 - 对象访问的定位方式
- uva10004 Bicoloring 黑白染色问题,DFS
- 高效算法设计专项:UVa 10691
- 排序算法练习——代码汇总
- 窗体接收拖入数据与拖动窗体内容移动
- poj 2182
- Oracle学习(14)---Oracle的自动工作负载库(AWR)和自动诊断工具(ADDM)
- C++程序设计语言学习笔记(三)
- 在JSP里使用CKEditor和CKFinder
- 白话MSDN:从普通DLL中导出C++类(1) – dllexport和dllimport的使用方法(中英对照、附注解)