PAT圖論是一大考點,主要集中在圖遍歷(DFS,BFS,連通分量)和最短路兩個部分,還有一些圖的新定義題(歐拉回路,哈密爾頓圈之類的),這類題很簡單。但圖最短路有些題較爲複雜,需要較強的編碼功底。
1、圖遍歷和連通分量
編號 | 標題 | 題解 | 難度等級 | 備註 |
---|---|---|---|---|
1013 | Battle Over Cities (25) | C++題解 | 2 | 圖連通分量計數 |
1021 | Deepest Root (25) | C++題解 | 3 | 樹的最大深度 |
1034 | Head of a Gang (30) | C++題解 | 4 | 圖遍歷 |
1076 | Forwards on Weibo (30) | C++題解 | 2 | 圖的BFS |
2、最短路徑
圖的最短路徑是常考題,在PAT裏面屬於最後一二題位置,難度較高。我對兩種常見的最短路算法
- 優先隊列優化的Dijistra,無負權的情況下使用,
- SPFA,有負權情況下使用,,k一般小於2,但可通過構造數據卡成
PAT對時間複雜度要求很低,無需優化即可通過,甚至Floyd都能過,所以題解中我統一使用優先隊列優化的Dijistra,萬一PAT下次卡時間了呢。
我在博客中對這兩種最短路算法進行了解釋並給出了模板,歡迎點擊查看。
編號 | 標題 | 題解 | 難度等級 | 備註 |
---|---|---|---|---|
1003 | Emergency (25) | C++題解 | 3 | 最短路徑+其他變量的更新(第二標尺) |
1018 | Public Bike Management (30) | C++題解 | 4 | 最短路徑+DFS |
1030 | Travel Plan (30) | C++題解 | 3 | 最短路徑+其他變量的更新(第二標尺) |
1072 | Gas Station (30) | C++題解 | 3 | 多個點的最短路 |
1087 | All Roads Lead to Rome (30) | C++題解 | 4 | 最短路徑+三個標尺層層更新 |
1111 | Online Map (30) | C++題解 | 3 | 最短路徑+兩個尺度 |