#45201: 廣度優先搜尋七步法


chiuliyou@gmail.com (邱立宇)

學校 : 新北市立永平高級中學
編號 : 136609
來源 : [106.1.117.161]
最後登入時間 :
2024-10-26 13:36:59
a290. 新手訓練系列 ~ 圖論 -- 新手訓練系列 ~ 3 | From: [118.167.70.47] | 發表日期 : 2025-01-24 19:30

1. 構造題目: 判斷城市 A 能不能到達城市 B
2. 定義狀態: graph[from] = {from 能到達的城市}
 
執行 BFS 步驟
4. 產生一個初始狀態,加入到 queue 當中 (在此題中是 from)
5. 檢查 queue 的首項(q.front)是不是目標狀態,是就停,否則繼續 (這裡是 to)
6. 將首項去除(q.pop),加入首項衍生出的後續狀態到裡面去 (在此題中是 graph[from] 的所有元素)
7. 假如 queue 為空,表示沒找到目標,非空則回到第五步驟
 
DFS 和 DFS 的差別在於使用的是 queue 還是 stack, 如果會衍生出的狀態可能會回到初始的地方, 使用 visited 陣列紀錄是否走訪過。
 
#45202: Re: 廣度優先搜尋七步法


chiuliyou@gmail.com (邱立宇)

學校 : 新北市立永平高級中學
編號 : 136609
來源 : [106.1.117.161]
最後登入時間 :
2024-10-26 13:36:59
a290. 新手訓練系列 ~ 圖論 -- 新手訓練系列 ~ 3 | From: [118.167.70.47] | 發表日期 : 2025-01-24 19:31

1. 構造題目: 判斷城市 A 能不能到達城市 B
2. 定義狀態: graph[from] = {from 能到達的城市}
 
執行 BFS 步驟
4. 產生一個初始狀態,加入到 queue 當中 (在此題中是 from)
5. 檢查 queue 的首項(q.front)是不是目標狀態,是就停,否則繼續 (這裡是 to)
6. 將首項去除(q.pop),加入首項衍生出的後續狀態到裡面去 (在此題中是 graph[from] 的所有元素)
7. 假如 queue 為空,表示沒找到目標,非空則回到第五步驟
 
DFS 和 DFS 的差別在於使用的是 queue 還是 stack, 如果會衍生出的狀態可能會回到初始的地方, 使用 visited 陣列紀錄是否走訪過。

需要使用 io 加速

cin.tie(0);

ios_base::sync_with_stdio(false);

 
ZeroJudge Forum