AKOJ-2037-出行方案
链接:https://oj.ahstu.cc/JudgeOnline/problem.php?id=2037
题意:
安科的夏天真是不一般的热,避免炎热,伍学长因此想为自己规划一个校园出行方案,使得从宿舍出发到校园的各个地方距离花费时间最短。我们已知校园一共有N个路口,标号为1的路口是宿舍所在地,2..N这N-1这几个标号分别是学校的N-1个地方,
M则表示安科共有M条路,N=M=0表示输入结束,接下来M行,每行有3个整数A,B,C(1<=A,B<=N,1<=C<=1000),表示在路口A与B之间有一条路,伍学长从A走到B花费时间C,伍学长来回用时相等,他现在想知道他分别到这N-1个路口的最小花费时间及步行方案
思路:
Dijkstra算法。
路径由Father数组记录每个位置最短路上的上一个结点。
每次成功松弛时,被松弛点的上一个结点便是用来松弛的点。
打印的时候用栈记录即可。
代码:
#include <iostream>
#include <memory.h>
#include <string>
#include <istream>
#include <sstream>
#include <vector>
#include <stack>
using namespace std;
const int MAXN = 110;
int n,m;
int Map[MAXN][MAXN];
int Dis[MAXN];
int Vis[MAXN];
int Father[MAXN]; void init()
{
for (int i = 1;i<=n;i++)
{
Dis[i] = Map[1][i];
Vis[i] = 0;
Father[i] = 1;
}
Vis[1] = 1;
} void Dijkstra()
{
init();
for (int i = 1;i<=n;i++)
{
int w = -1,small = 999999;
for (int j = 1;j<=n;j++)
{
if (Vis[j] == 0&&Dis[j] < small)
{
small = Dis[w = j];
}
}
Vis[w] = 1;
for (int j = 1;j<=n;j++)
{
if (Vis[j] == 0&&Dis[j] > Dis[w] + Map[w][j])
{
Father[j] = w;
Dis[j] = Dis[w] + Map[w][j];
}
}
}
} void Print_Path(int x)
{
stack<int> Path;
while (1)
{
Path.push(x);
if (Father[x] == 1)
break;
x = Father[x];
}
while (Path.size())
{
cout << "->" << Path.top();
Path.pop();
}
cout << endl;
} int main()
{
while (cin >> n >> m&&m)
{
int l, r, v;
for (int i = 1;i<=n;i++)
for (int j = 1;j<=n;j++)
if (i == j)
Map[i][j] = 0;
else
Map[i][j] = 999999;
for (int i = 1; i <= m; i++)
{
cin >> l >> r >>v;
Map[l][r] = Map[r][l] = v;
}
Dijkstra();
for (int i = 2;i<=n;i++)
{
cout << Dis[i] << ' ';
cout << 1;
Print_Path(i);
}
} return 0;
}
AKOJ-2037-出行方案的更多相关文章
- ylbtech-公司-滴滴出行:滴滴出行
ylbtech-公司-滴滴出行:滴滴出行 滴滴出行是涵盖出租车. 专车. 滴滴快车. 顺风车. 代驾及 大巴等多项业务在内的一站式出行平台,2015年9月9日由“滴滴打车”更名而来. 2月1日起, ...
- 智慧出行--maas
未来智慧出行新生态——MaaS系统的解读与畅想 -城市交通:观察与思考 - 未来智慧出行新生态——MaaS系统的解读与畅想 在货运领域,有一种承运方式叫“多式联运”,它是由承运人与货主签订一份货运合同 ...
- 滴滴与Uber的竞争分析
滴滴与Uber的竞争分析 随着互联网时代的到来,智能手机的普及,互联网不再是一个完全虚拟的东西,它开始慢慢地融入到我们的生活中来.这些年我们可以明显地感受到我们的生活方式在一天天发生着变化,我们也逐渐 ...
- 百度地图api简单使用方法
百度地图API的使用方法 百度地图API 开始学习百度地图API最简单的方式是看一个简单的示例.以下代码创建了一个520x340大小的地图区域并以天安门作为地图的中心: 1. <html&g ...
- Android定位&地图&导航——自定义公交路线代码
一.问题描述 基于百度地图实现检索指定城市指定公交的交通路线图,效果如图所示 二.通用组件Application类,主要创建并初始化BMapManager public class App exten ...
- 百度地图API的使用方法
百度地图API 开始学习百度地图API最简单的方式是看一个简单的示例.以下代码创建了一个520x340大小的地图区域并以天安门作为地图的中心: 1. <html> 2. <head& ...
- 百度地图API开发指南
简介什么是百度地图API? 百度地图API是一套由JavaScript语言编写的应用程序接口,它能够帮助您在网站中构建功能丰富.交互性强的地图应用.百度地图API包含了构建地图基本功能的各种接口,提供 ...
- Android百度地图开发(二)地图覆盖物
上一篇文章写道如何在一个mapview中简单的显示地图:本次学习一下如何在地图上添加一些覆盖物. 1.设置显示交通地图: // 显示交通地图 mapView.setTraffic(true); 2.设 ...
- 百度地图API使用介绍
百度地图API 开始学习百度地图API最简单的方式是看一个简单的示例.以下代码创建了一个520x340大小的地图区域并以天安门作为地图的中心: 1. <html> 2. <head& ...
随机推荐
- ThinkPHP利用数据库字段做栏目的无限分类
一直以来对cms后台的栏目管理不太理解,尤其是子栏目顶级栏目这种关系,通过网上的搜索与自己的摸索,实现方法如下(原理是利用数据库的path字段): 1.建立简单的栏目表: CREATE TABLE ` ...
- codeforces A. Punctuation 解题报告
题目链接:http://codeforces.com/problemset/problem/147/A 题目意思:给定一篇文章,需要对这篇文章进行编辑,使得:(1)两个单词之间有一个空格分开 (2) ...
- suishou
sageException: Write operations are not allowed in read-only mode (FlushMode.NEVER/MANUAL): Turn you ...
- 使用XMLHttpRequest
请求种类 通过XMLHttpRequest的请求可以通过同步和异步的方式获取数据,请求的种类在XMLHttpRequest的open()方法的第三三个可选参数async设置.如果这个参数是true或者 ...
- java 基于百度地图API GPS经纬度解析地址
首先这是百度地图api 的接口地址,基于接口的参数,不过多介绍,其中都提供相应的介绍: http://lbsyun.baidu.com/index.php?title=webapi/guide/web ...
- codeforces 701A A. Cards(水题)
题目链接: A. Cards 题意: 问两个数的和相同,怎么组合; AC代码: #include <iostream> #include <cstdio> #include & ...
- testing
doctest_test.py def square(x): ''' 这里需要空格 >>> square(2) 4 啦啦 >>> square(3) 9 上不一行能 ...
- codevs 1046 旅行家的预算
传送门 1046 旅行家的预算 1999年NOIP全国联赛普及组NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold题解 题目描述 Des ...
- 合并多个cv::Mat类型,即合并多个图片的接口
1. cv::Mat get_merage_image(cv::Mat cur_frame) { cv::Mat image_one=cur_frame; cv::Mat image_two=cur_ ...
- c++11 右值引用和移动语义
什么是左值.右值 最常见的误解: 等号左边的就是左值,等号右边的就是右值 左值和右值都是针对表达式而言的, 左值是指表达式结束后依然存在的持久对象 右值是指表达式结束时就不再存在的临时对象区分: 能对 ...