codeforces377a

来源:互联网 发布:什么数据库好用 编辑:程序博客网 时间:2024/04/28 03:14

这个题就是这么回事。。。dfs到不能走了,才,填。

给你个联通块,让你填进去k个方格,填完之后,最后的还是联通的

#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int dir[4][2] = {0 , 1 , 0 , -1 , 1 , 0 , -1 , 0};int k , n , m , vis[505][505];char grid[505][505];void dfs(int x , int y){    vis[x][y] = 1;    for(int i = 0 ; i < 4 ; i++){        int xx = x + dir[i][0];        int yy = y + dir[i][1];        if(!vis[xx][yy] && grid[xx][yy] == '.' && xx >= 0 && xx < n && yy >= 0 && yy < m)            dfs(xx , yy);    }    if(k > 0) grid[x][y] = 'X';    k--;}int main(){    //int n , m ;    scanf("%d %d %d",&n , &m , &k);    for(int i = 0 ; i < n ; i++){        scanf("%s",grid[i]);    }    //printf("**");    for(int i = 0 ; i < n ; i++){        for(int j = 0 ; j < m ; j++)            if(grid[i][j] == '.') dfs(i,j);    }    for(int i = 0 ; i < n ; i++)        puts(grid[i]);    return 0;}
0 0