104. 建造最大岛屿 (kamacoder.com)
- n,m=map(int,input().split())
- g=[]
- for i in range(n):
- g.append(list(map(int,input().split())))
- maxsum=0
- dir=[[0,1],[0,-1],[1,0],[-1,0]]
- s=0
- def dfs(x,y):
- global s
- s+=1
- visit[x][y]=True
- for i,j in dir:
- next_x=x+i
- next_y=y+j
- if next_x<0 or next_x>=n or next_y<0 or next_y>=m:
- continue
- if not visit[next_x][next_y] and g[next_x][next_y]==1:
- dfs(next_x,next_y)
- for i in range(n):
- for j in range(m):
- if g[i][j]==0 :
- visit=[[False]*m for _ in range(n)]
- s=0
- g[i][j]=1
- dfs(i,j)
- maxsum=max(maxsum,s)
- g[i][j]=0
- if maxsum==0:
- print(max(m,n))
- else:
- print(maxsum)