import pprint
r,c=map(int,input().split())
b=[]
for x in range(c):
    b.append(list(input()))
_=input()
d=[(1,0),(0,1),(-1,0),(0,-1)]

node=[]
vis=set()

for x in range(c):
    for y in range(r):
        if b[x][y]=='@':
            node.append((x,y))
            vis.add((x,y))
            break
    else:
        continue
    break
                 
step=1
def bfs():
    global step
    while node:
        size=len(node)
        for i in range(size):
            x=node[0][0]
            y=node[0][1]
            node.remove((x,y))
            for m,n in d:
               
                if 0<=x+m<c and 0<=y+n<len(b[x+m]) and (x+m,y+n) not in vis and b[x+m][y+n]!="#":
                    if y+n>=c:
                        continue
                    step+=1
                    node.append((x+m,y+n))
                    vis.add((x+m,y+n))
     
bfs()
print(step)

最后一个样例:

16 16
....#.......##..
....##......##..
....#.......#...
...##.......#...
....@.........##
..............##
##....##....##..
#...........##..
#...............
.#..#.##........
##..............
.........#..####
..................
........#######.
.#..#.##........
.#..#.##
0 0


点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论