#42571: 使用Stack記錄,取代DFS


htchu.taiwan@gmail.com (Hsueh-Ting Chu)

學校 : 不指定學校
編號 : 274613
來源 : [220.134.29.203]
最後登入時間 :
2024-11-03 21:13:57
m372. 3. 搬家 -- 2023年10月APCS | From: [220.134.29.203] | 發表日期 : 2024-10-03 02:22

找連通元件就是著色問題。

因為用recursive DFS()會超過系統限制。

所以改用stack來記錄連通的隣居。

C=[[-1]*m for i in range(n)]
Q=[]
nextColor=0
for y in range(n):
  for x in range(m):
    if A[y][x]!='0' and C[y][x]==-1:
      C[y][x]=nextColor
      nextColor+=1
      Q.append((x,y))
      while len(Q)>0:
        x,y=Q.pop()
        travel(x, y)
 
ZeroJudge Forum