zoukankan      html  css  js  c++  java
  • uva10004 Bicoloring 黑白染色问题,DFS

     又是水题,最近切题目只能切出水题。。。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++;
    		}//input
    		bool 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
    ", k, j);
    					flag = false;
    				}
    //		printf("%d %d
    ", i, flag);
    		for (int k = 0; k <= i; k++)
    			puts(maze[k]);
    	}//while
    }



  • 相关阅读:
    服务器运维
    mysq配置
    PHP-FPM进程数的设定
    vsftpd 安装配置详细教程
    php-fpm性能优化
    如果不知道MySQL当前使用配置文件(my.cnf)的路径的解决方法
    搭建linux+nginx+mysql+php环境
    PHP 页面编码声明方法详解(header或meta)
    Linux内核的一些知识。
    Connector框架笔记
  • 原文地址:https://www.cnblogs.com/java20130723/p/3212250.html
Copyright © 2011-2022 走看看