#46164: 簡單理解


0801elmer666@gmail.com (薛冠志)

學校 : 國立霧峰高級農工職業學校
編號 : 273218
來源 : [106.107.218.192]
最後登入時間 :
2025-07-28 20:28:46

a, b = map(int,input().split())
road = []
for i in range(a):
row = list(map(int,input().split()))
road.append(row)
min_val = 10000000
start_x = start_y = 0
for i in range(a):
for j in range(b):
if road[i][j] < min_val:
min_val = road[i][j]
start_x = i
start_y = j
visited = [[False]*b for _ in range(a)]
visited[start_x][start_y] = True
total = road[start_x][start_y]
x = start_x
y = start_y
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
while True:
min_next = 10000000
next_x = -1
next_y = -1
for i in range(4):
nx = x + dx[i]
ny = y + dy[i]
if 0 <= nx < a and 0 <= ny < b:
if not visited[nx][ny] and road[nx][ny] < min_next:
min_next = road[nx][ny]
next_x = nx
next_y = ny
if next_x == -1:
break
x = next_x
y = next_y
visited[x][y] = True
total += road[x][y]
print(total)