题目描述:
这一天蒜头君生日,他的朋友们一起来给蒜头君买一个大的蛋糕过生日。游戏做完后到了切蛋糕的时刻了,朋友们知道蒜头君喜欢吃蛋糕,便让蒜头君自己给自己切一块最大的。蒜头君看朋友们这么热情也就不客气了。
这块蛋糕是由 R \times CR×C 的网格构成,每个网格上面都放有不同的水果。蒜头君把这些水果分为两类,一类是自己喜欢吃的水果,用’#‘来表示;一类是自己不喜欢吃的水果,用’.'来表示。
蒜头君对切出的蛋糕有如下要求:
切出的蛋糕连成一块(可以不为矩形,但必须在网格上连通)
切出的蛋糕只包含自己喜欢吃的水果
请问,蒜头君最大可以吃到多大的蛋糕?
输入格式
第一行输入两个被空格隔开的整数 R(1 \le R \le 1000)R(1≤R≤1000) 和 C(1 \le C \le 1000)C(1≤C≤1000)。
然后会有一个 R \times CR×C 的网格,由’#‘和’.'组成。
输出格式
输出一个整数,表示蒜头君可以吃到的蛋糕最大是多少(即对应到网格中的格子数)。
输入样例:
5 6
.#…
…#…
…#…#
…###.
.#…
输出样例:
5
n,m=map(int,input().split())
grid=[]
for i in range(n):
list1=list(input())
grid.append(list1)
n=len(grid)
m=len(grid[0])
def bfs(x,y,cnt):
global ans
if grid[x][y]=='#':
grid[x][y]='.'
cnt+=1
if cnt > ans:
ans = cnt
for dx,dy in [(1,0),(0,1),(-1,0),(0,-1)]:
x1=dx+x
y1=dy+y
if 0<=x1<n and 0<=y1<m:
bfs(x1,y1,cnt)
else:
return #结束此次步骤
ans=0
for i in range(n):
for j in range(m):
if grid[i][j]=='#':
bfs(i,j,0)
else:
continue #小循环继续
print(ans)