尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

2016-PTA初赛-L3-1 天梯地图(dijkstra模板)

2016-PTA初赛-L3-1 天梯地图(dijkstra模板)
📅 发布时间:2026/6/22 8:06:51
dijkstra

image

思路

dijkstra模板题,不需要小根堆优化,这题的第二个样例:路径一样则合并输出,怎么判断路径一样?会想到C++的vector对==进行了重写(即每个对应位置的元素一样)。

AcCode:

#include<iostream>
#include<cstring>
#include<vector>
using namespace std;
int N, M;
//最后一维表示time或distance,graph存图,dist存最短距,lst存上个节点
int graph[510][510][2], dist[510][2], lst[510][2];
//两种路径
vector<int> path[2];
//dijkstra模板
int dj(int st, int be, int end){dist[be][st] = 0;bool vis[510];lst[be][st] = -1;memset(vis, false, sizeof(vis));for(int i = 0; i < N; i++){int cur, mn = 0x7fffffff;for(int i = 0; i < N; i++) if(dist[i][st] < mn && !vis[i]) mn = dist[i][st], cur = i; for(int i = 0; i < N; i++){if(graph[cur][i][st] && dist[cur][st] + graph[cur][i][st] < dist[i][st] && !vis[i]){dist[i][st] = dist[cur][st] + graph[cur][i][st];lst[i][st] = cur;}}vis[cur] = true;}// for(int i = 0; i < N; i++) cout << lst[i][st] << "-";// cout << endl;return dist[end][st];
}
//递归的获取路径
void getPath(int st, int end){if(end == -1) return;getPath(st, lst[end][st]);path[st].push_back(end);
}int main(){
//初始化dist数组为大值,并不知道time和lenth取值范围,题目压根没写,我猜的。memset(dist, 0x2f, sizeof(dist));cin >> N >> M;
//输入数据while(M--){int v1, v2, ow, len, time; cin >> v1 >> v2 >> ow >> len >> time;graph[v1][v2][0] = time;graph[v1][v2][1] = len;if(ow != 1) graph[v2][v1][0] = time, graph[v2][v1][1] = len;}
//调用函数输出答案即可int be, end; cin >> be >> end;int ans[2];for(int i = 0; i < 2; i++){ans[i] = dj(i, be, end);getPath(i, end);}if(path[1] != path[0]){cout << "Time = " << ans[0] << ": ";for(int i = 0; i < path[0].size(); i++){cout << path[0][i];if(i != path[0].size() - 1) cout << " => ";}cout << endl << "Distance = " << ans[1] << ": ";for(int i = 0; i < path[1].size(); i++){cout << path[1][i];if(i != path[1].size() - 1) cout << " => ";}}else{cout << "Time = " << ans[0] << "; " << "Distance = " << ans[1] << ": ";for(int i = 0; i < path[0].size(); i++){cout << path[0][i];if(i != path[0].size() - 1) cout << " => ";}}return 0;
}

相关新闻

  • KEYDIY Toyota 8A (BA) 4A All-Lost Adapter Cable: Simplify Key Replacement for Mechanics Car Owners
  • KEYDIY KD NB104 4-Button Universal Remote Key (5pcs) – Reliable Replacement for Euro/American Cars
  • 夺命雷公狗—好用的截图工具分享

最新新闻

  • Grok动态稀疏激活与确定性低延迟机制深度解析
  • MPC565/566 Nexus调试接口硬件配置与设计实战指南
  • Ubuntu 18.04下Nginx启用HTTP/2完整实践指南
  • 电动车托运避坑2026:最全靠谱平台筛选技巧+对比 - 快递物流资讯
  • Pinwheel调度与k-Visits问题:周期性任务调度的复杂度与算法实践
  • MIT协议下AI模型集成的合规实践与信源透明化

日新闻

  • 2026速览惠州叛逆青少年学校前十大排名名单出炉 - 武汉中职最新信息发布
  • 2026上饶白蚁消杀哪家好?15年本土2大权威白蚁防治公司推荐(金盾虫控/青蚁卫士) - 我叫一
  • 天龙八部单机版终极数据管理工具:5个技巧快速掌握游戏数据编辑

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号