HDU 2112 HDU Today (Dijkstra算法)
HDU Today
Total Submission(s): 13952 Accepted Submission(s): 3264
这样住了一段时间,徐总对当地的交通还是不太了解。
有时非常郁闷。想去一个地方又不知道应该乘什么公交车,在什么地方转车,在什么地方下车(事实上徐总自己有车。却一定要与民同乐,这就是徐总的性格)。
徐总常常会问蹩脚的英文问路:“Can you help me?”。
看着他那迷茫而又无助的眼神,热心的你能帮帮他吗?
请帮助他用最短的时间到达目的地(如果每一路公交车都仅仅在起点站和终点站停,并且随时都会开)。
第二行有徐总的所在地start。他的目的地end;
接着有n行,每行有站名s。站名e,以及从s到e的时间整数t(0<t<100)(每一个地名是一个长度不超过30的字符串)。
note:一组数据中地名数不会超过150个。
假设N==-1,表示输入结束。
6
xiasha westlake
xiasha station 60
xiasha ShoppingCenterofHangZhou 30
station westlake 20
ShoppingCenterofHangZhou supermarket 10
xiasha supermarket 50
supermarket westlake 10
-1
50 Hint:
The best route is:
xiasha->ShoppingCenterofHangZhou->supermarket->westlake 尽管偶尔会迷路。可是由于有了你的帮助
**和**从此还是过上了幸福的生活。 ――全剧终――
主要是前期处理困难啊。只是还是想办法搞定了。
代码:859MS (代码没优化)
#include <iostream>
#include <string>
using namespace std;
#define min(a,b) (a<b? a:b)
#define max(a,b) (a>b?a:b)
#define M 160
#define INF 0xfffff;
int dis[M],map[M][M],n;
char a[M][M];
int find(char s[])
{
int i;
for(i=1;i<=n;i++)
if(strcmp(s,a[i])==0) //假设已经出现过,就直接用下标。 return i;
strcpy(a[++n],s); //没有出现过,就将点增加,总站数+1,该网站下标为n+1。
return n; //将现有的网站数返回。
} void Dijkstra(int x) //模板。
{
bool v[M];
int i,j,k,minx;
memset(v,0,sizeof(v));
for(i=1;i<=n;i++)
dis[i]=map[x][i];
v[x]=1;
for(i=1;i<n;i++)
{ minx=INF;
for(j=1;j<=n;j++) //找到当前能够确定是最短路径的点。 Dijkstra的核心(贪心)。
if(!v[j] && dis[j]<minx)
{
k=j;
minx=dis[j];
}
v[k]=1;
minx=INF;
for(j=1;j<=n;j++) //更新权值,也就是当前的最短路更新。 if(!v[j] && dis[k]<minx)
{
dis[j]=min(dis[j],dis[k]+map[k][j]);
}
}
}
int main()
{
int N;
while(scanf("%d",&N),N!=-1)
{
char s[M];int r=INF;
int start,end,a,b,time,i,j;
n=0;
cin >> s; start = find(s);
cin >> s; end = find(s);
for(i=0;i<M;i++)
for(j=0;j<M;j++)
map[i][j] = (i==j? 0:r);
for(i=0;i<N;i++)
{
cin>>s; a=find(s);
cin>>s; b=find(s);
cin>>time;
map[a][b]=map[b][a]=min(map[a][b],time);
}
Dijkstra(start); if(dis[end]!=r)
cout<<dis[end]<<endl;
else if(start==end)
cout<<"0"<<endl;
else
cout<<"-1"<<endl;
}
return 0;
}
这问题,也可以在输入处理。但是,没有优化算法,新学校学科的基础后,。
版权声明:本文博主原创文章。博客,未经同意不得转载。
HDU 2112 HDU Today (Dijkstra算法)的更多相关文章
- ACM: HDU 3790 最短路径问题-Dijkstra算法
HDU 3790 最短路径问题 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Des ...
- ACM: HDU 2544 最短路-Dijkstra算法
HDU 2544最短路 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Descrip ...
- HDU 2112 HDU Today(Dijkstra)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2112 HDU Today Time Limit: 15000/5000 MS (Java/Others ...
- hdu 2112 HDU Today
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2112 HDU Today Description 经过锦囊相助,海东集团终于度过了危机,从此,HDU的 ...
- HDOJ/HDU 2544 最短路---dijkstra算法
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2544 这题的思路可以见这里(同一类型):http://blog.csdn.net/xiaozhuaix ...
- hdu 2112 HDU Today (floyd算法)
这道题貌似在原来学长给我们的搞的小比赛中出过! 这次又让我遇到,果断拿下! 不过方法很蠢,跑了1000多ms,虽然要求5000ms以内! 题目就是给你一些位置之间的距离,然后再让你求特定的两点之间的距 ...
- hdu 2680 最短路径(dijkstra算法+多源最短路径单源化求最小值)这题有点意思
Choose the best route Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
- hdu 2112 HDU Today(map与dijkstra的结合使用)
HDU Today Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- HDU 2112 HDU Today <SPFA算法+map函数>
HDU Today Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
随机推荐
- cocos2dx移植android平台
本人这几天一直都没有跟新自己的网站内容,问我干什么去了,当然是做这篇文章做的事了,说起这个移植来真是麻烦啊,网上试验了各种方法,都不知道谁对谁错啊.不过经过本人这三天的研究最后终于成功了,为了让大家少 ...
- Java虚拟机几个命令行参数说明
一.运行class文件 执行带main方法的class文件,Java虚拟机命令参数行为: java <CLASS文件名> 注意:CLASS文件名不要带文件后缀.class 例如: java ...
- Java命令参数说明
Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令 JAVA_HOME"bin"java –option 来启动,-option为虚 ...
- Maven插件之git-commit-id-plugin
SCM使用GIT而非SVN时,使用Maven发布,总是会出一些莫名其妙的问题,google查找原因,无意中看到了这个插件; 对于该插件,到目前为止,文档比较少,尤其是中文的文档;全部的信息都包含在项目 ...
- EasyUI基础searchbox&progressbar(搜索框,进度条)
easyui学习的基本组成部分(八个部分)硕果仅存searchbox和pargressbar.tooltip该,有一点兴奋.本文将偏向searchbox和pargressbar做一个探讨.鉴于双方的内 ...
- REST API 基于ACCESS TOKEN
REST API 基于ACCESS TOKEN 的权限解决方案 REST 设计原则是statelessness的,而且但客户端是APP时,从APP发起的请求,不是基于bowers,无法带相同的se ...
- git tag使用
#git tag command git tag [-a | -s | -u <key-id>] [-f] [-m <msg> | -F <file>] ...
- 【原创】leetCodeOj --- Find Peak Element 解题报告
题目地址: https://oj.leetcode.com/problems/find-peak-element/ 题目内容: A peak element is an element that is ...
- BZOJ 2006 NOI2010 超级钢琴 划分树+堆
题目大意:给定一个序列.找到k个长度在[l,r]之间的序列.使得和最大 暴力O(n^2logn),肯定过不去 看到这题的第一眼我OTZ了一下午... 后来研究了非常久别人的题解才弄明确怎么回事...蒟 ...
- javascript从定义到执行 js引擎 闭包
javascript从定义到执行,JS引擎在实现层做了很多初始化工作,因此在学习JS引擎工作机制之前,我们需要引入几个相关的概念:执行环境 栈.全局对象.执行环境.变量对象.活动对象.作用域和作用域链 ...