搜索
热搜: NOIP OIer 神牛
查看: 306|回复: 0

45623

[复制链接]

主题

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2023-5-20 15:40:11 | 显示全部楼层 |阅读模式
#include <iostream>
#include <cstring>
using namespace std;
int r,s,mx;
char ch[25][25];
bool vis[25][25];
int dr[4][2] = {{-1,0},{0,-1},{1,0},{0,1}};
void dfs(int x,int y){
        for (int i = 0;i < 4;i++){
                int nx = x + dr[0];
                int ny = y + dr[1];
                if (nx >= 0 && nx < r && ny >= 0 && ny < s && !vis[nx][ny] && ch[nx][ny] == '.'){
                        vis[nx][ny] = true;
                        mx++;
                        dfs(nx,ny);
                }
        }
}
int main(){
        while (cin >> s >> r && r != 0 && s != 0){
                memset(vis,false,sizeof(vis));
                int x,y;
                for (int i = 0;i < r;i++){
                        for (int j = 0;j < s;j++){
                                cin >> ch[j];
                                if(ch[j] == '@'){
                                        x = i;
                                        y = j;
                                }
                        }
                }
                mx = 1;
                vis[x][y] = true;
                dfs(x,y);
                cout << mx << endl;
        }
        return 0;
}

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

津ICP备19006949号-1 | 津公网安备12010102000465号

快速回复 返回顶部 返回列表