1163 Dijkstra Sequence + 層序遍歷 + 鏈式前向星
2023-05-07 15:17:19 來源:博客園
(相關(guān)資料圖)
PAT題目鏈接:https://pintia.cn/problem-sets/994805342720868352/exam/problems/1478635670373253120
這題踩了太多坑,本來沒什么內(nèi)容,硬是斷斷續(xù)續(xù)查了三天的bug:
第一天: 循環(huán)的時候內(nèi)部判斷邏輯不要寫在for循環(huán)里,否則本該continue的邏輯,硬生生變成了break。我真是腦袋瓜秀逗了才會這么寫代碼。第二天: 混淆了dijkstra和一般最短路算法的思想,導(dǎo)致遲遲得不到想要的結(jié)果。最后參考了層序遍歷的思想,改掉了這個bug。第三天: 題目說Ne不超過105,但是開邊的時候數(shù)組要開205, 因為是雙向的。最后那個段錯誤又卡了我好久。
#include#include#include#include#includeusing namespace std;int n, m, k;struct edge { int to, next, c;} g[200005];int head[1005], dis[1005], vis[1005], cnt;inline void add(int a, int b, int c) { g[++cnt] = edge{b, head[a], c}; head[a] = cnt;}bool spfa(vector &arr) { memset(vis, 0, sizeof(vis)); memset(dis, 0x3f3f3f3f, sizeof(dis)); queue q; int idx = 0; q.push(arr[idx++]); dis[arr[0]] = 0; vis[arr[0]] = 1; while (q.size()) { // 靈感來源——層序遍歷 int size = q.size(); // 上一波出隊, 更新狀態(tài) for (int j = 0; j < size; j++) { int ind = q.front(); q.pop(); for (int i = head[ind]; i; i = g[i].next) { int to = g[i].to, c = g[i].c; if (dis[ind] + c < dis[to]) dis[to] = dis[ind] + c; } } // 下一波入隊 int min_dis = 0x3f3f3f3f; set v; for (int to = 1; to <= n; to++) { if (to == arr[0]) continue; if (!vis[to]) { if (dis[to] < min_dis) { min_dis = dis[to]; v.clear(); v.insert(to); } else if (dis[to] == min_dis) { v.insert(to); } } } while (v.size()) { if (v.find(arr[idx]) != v.end()) { q.push(arr[idx]); vis[arr[idx]] = 1; v.erase(arr[idx]); idx++; } else { return false; } } } return idx == n;}int main() { cin >> n >> m; for (int i = 0; i < m; i++) { int a, b, c; cin >> a >> b >> c; add(a, b, c); add(b, a, c); } cin >> k; while (k--) { vector arr(n); for (int i = 0; i < n; i++) cin >> arr[i]; if (spfa(arr)) cout << "Yes\n"; else cout << "No\n"; } return 0;}
關(guān)鍵詞:
推薦內(nèi)容
- 1163 Dijkstra Sequence + 層序遍歷 + 鏈式前向星
- “南京女大學(xué)生被害案”主犯洪嶠被執(zhí)行死刑,受害
- 國王加冕典禮上,帥氣侍從搶走查爾斯風(fēng)頭,被網(wǎng)友
- 世界今亮點!武昌古城半馬女子冠軍:很幸運,和漢
- 湖南一鄉(xiāng)鎮(zhèn)回應(yīng)“干部3天花49萬插秧2畝助農(nóng)”:網(wǎng)
- “死神”現(xiàn)身查爾斯加冕典禮?網(wǎng)友:這是戴安娜來
- 福建4名基層干部查看水情落水失聯(lián),年紀最小的僅2
- 速看:這個“犯了錯”的干部為何被免責(zé)?
- 中國氣象局:西北地區(qū)氣溫將持續(xù)走低
- 特大暴雨致多處積水 福建邵武緊急轉(zhuǎn)移疏散群眾
- 起底車企薪資:有人年入過億|上市公司年報大解讀
- 比亞迪研發(fā)投入大,蔚來砸錢營銷猛|上市公司年報
- 環(huán)球熱消息:以智能機器人為產(chǎn)業(yè)導(dǎo)向,上海張江打
- 揭榜掛帥,建設(shè)長三角區(qū)域科技體制機制改革“試驗
- 環(huán)球微動態(tài)丨我國物流市場規(guī)模連續(xù)7年位居全球第一
- 一季度海洋經(jīng)濟復(fù)蘇態(tài)勢強勁|全球快訊
- 車市盈利真相:一半企業(yè)在虧損|上市公司年報大解
- 全國開展校外培訓(xùn)“平安消費”專項行動 維護學(xué)生
- 世界快消息!最牛主題!10000字最新解讀來了
- 環(huán)球今熱點:北京跨區(qū)小升初8日開始辦理
- 不合格!涉及多個知名品牌
- 天天快訊:過期藥品!淄博一衛(wèi)生院被罰款1萬元
- 山西省氣象局2023年公開招聘應(yīng)屆高校畢業(yè)生面試公告
- 濟寧兗州區(qū)鼓樓街道:“接訴即辦”搭建聯(lián)系群眾“
- 銅川市中級人民法院召開破產(chǎn)審判工作新聞發(fā)布會
- 全球關(guān)注:珠海更好的男科 前列腺炎會導(dǎo)致男性不
- 中國電信助力2023年武昌古城半程馬拉松加“數(shù)”跑
- 黃陂區(qū)稅務(wù)局舉辦“五四”青年節(jié)“朗讀者”比賽
- 武漢沌口街道:黨建引領(lǐng)居民“點單” 織就社區(qū)文
- 武昌復(fù)興路社區(qū):爭做新時代“追光者”,奏響“紫
- 武漢武昌:“植物醫(yī)生”把脈問診 扮靚社區(qū)綠色
- 當(dāng)前簡訊:一起沖“亞”!千名跑者齊聚杭州亞運村
- 《湖北省口岸現(xiàn)代化發(fā)展三年行動方案》:打造“水
- 研究人員發(fā)明單分子閥門 實現(xiàn)納米通道中的單分子
- 喜來健按摩床:輔助治療慢性胃炎,給你健康美好生
- 【聚看點】山東博士后平臺評估亮黃紅牌
- 世界熱訊:駐市委辦紀檢監(jiān)察組:落實“固堤行動”
- 快消息!忻城縣發(fā)布橙色暴雨預(yù)警
- 平遠縣發(fā)布黃色暴雨預(yù)警 環(huán)球動態(tài)
- 天天通訊!馮飛在昌江調(diào)研時指出 精心呵護“國寶