加载中...![]()
1163 Dijkstra Sequence + 层序遍历 + 链式前向星
2023-05-07 15:17:19 来源:博客园
(相关资料图)
PAT题目链接:https://pintia.cn/problem-sets/994805342720868352/exam/problems/1478635670373253120
这题踩了太多坑,本来没什么内容,硬是断断续续查了三天的bug:
第一天: 循环的时候内部判断逻辑不要写在for循环里,否则本该continue的逻辑,硬生生变成了break。我真是脑袋瓜秀逗了才会这么写代码。第二天: 混淆了dijkstra和一般最短路算法的思想,导致迟迟得不到想要的结果。最后参考了层序遍历的思想,改掉了这个bug。第三天: 题目说Ne不超过105,但是开边的时候数组要开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(); // 上一波出队, 更新状态 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;}
关键词:
推荐内容
- 1163 Dijkstra Sequence + 层序遍历 + 链式前向星
- “南京女大学生被害案”主犯洪峤被执行死刑,受害
- 国王加冕典礼上,帅气侍从抢走查尔斯风头,被网友
- 世界今亮点!武昌古城半马女子冠军:很幸运,和汉
- 湖南一乡镇回应“干部3天花49万插秧2亩助农”:网
- “死神”现身查尔斯加冕典礼?网友:这是戴安娜来
- 福建4名基层干部查看水情落水失联,年纪最小的仅2
- 速看:这个“犯了错”的干部为何被免责?
- 中国气象局:西北地区气温将持续走低
- 特大暴雨致多处积水 福建邵武紧急转移疏散群众
- 起底车企薪资:有人年入过亿|上市公司年报大解读
- 比亚迪研发投入大,蔚来砸钱营销猛|上市公司年报
- 环球热消息:以智能机器人为产业导向,上海张江打
- 揭榜挂帅,建设长三角区域科技体制机制改革“试验
- 环球微动态丨我国物流市场规模连续7年位居全球第一
- 一季度海洋经济复苏态势强劲|全球快讯
- 车市盈利真相:一半企业在亏损|上市公司年报大解
- 全国开展校外培训“平安消费”专项行动 维护学生
- 世界快消息!最牛主题!10000字最新解读来了
- 环球今热点:北京跨区小升初8日开始办理
- 不合格!涉及多个知名品牌
- 天天快讯:过期药品!淄博一卫生院被罚款1万元
- 山西省气象局2023年公开招聘应届高校毕业生面试公告
- 济宁兖州区鼓楼街道:“接诉即办”搭建联系群众“
- 铜川市中级人民法院召开破产审判工作新闻发布会
- 全球关注:珠海更好的男科 前列腺炎会导致男性不
- 中国电信助力2023年武昌古城半程马拉松加“数”跑
- 黄陂区税务局举办“五四”青年节“朗读者”比赛
- 武汉沌口街道:党建引领居民“点单” 织就社区文
- 武昌复兴路社区:争做新时代“追光者”,奏响“紫
- 武汉武昌:“植物医生”把脉问诊 扮靓社区绿色
- 当前简讯:一起冲“亚”!千名跑者齐聚杭州亚运村
- 《湖北省口岸现代化发展三年行动方案》:打造“水
- 研究人员发明单分子阀门 实现纳米通道中的单分子
- 喜来健按摩床:辅助治疗慢性胃炎,给你健康美好生
- 【聚看点】山东博士后平台评估亮黄红牌
- 世界热讯:驻市委办纪检监察组:落实“固堤行动”
- 快消息!忻城县发布橙色暴雨预警
- 平远县发布黄色暴雨预警 环球动态
- 天天通讯!冯飞在昌江调研时指出 精心呵护“国宝