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 ...
随机推荐
- JS上传图片本地实时预览缩略图
HTML 代码如下 <body> <table width="100%" border="0" cellspacing="0&quo ...
- poj1260
给定n类等级的珍珠 每类的珍珠都有需求的个数ai,和价格pi 为了防止游客只买1颗珍珠,所以购买ai个珍珠时,要加上10个的价格 即(ai+10)*pi 有时,购买高等级的珍珠代替低等级的珍珠时,可能 ...
- 即时编译和打包您的 Groovy 脚本(转)
在本文中将会涉及到: 使用 CliBuilder 来实现对命令行选项的支持,脚本执行时所需要的参数将通过命令行选项的方式传递. 使用 GroovyClassLoader 加载 Groovy class ...
- 重新想象 Windows 8 Store Apps (1) - 控件之文本控件: TextBlock, TextBox, PasswordBox, RichEditBox, RichTextBlock, RichTextBlockOverflow
原文:重新想象 Windows 8 Store Apps (1) - 控件之文本控件: TextBlock, TextBox, PasswordBox, RichEditBox, RichTextBl ...
- 重新想象 Windows 8 Store Apps (26) - 选取器: 自定义文件选取窗口, 自定义文件保存窗口
原文:重新想象 Windows 8 Store Apps (26) - 选取器: 自定义文件选取窗口, 自定义文件保存窗口 [源码下载] 重新想象 Windows 8 Store Apps (26) ...
- SQL查询优化——数据结构设计
本文部分内容会涉及mysql,可能在其它数据库中并不适用. 本章节仅仅针对数据库结构设计做讨论.查询优化的其它内容待续. 数据库设计及使用是WEB开发程序猿必备的一项基础技能,在大数据量和高并发场景, ...
- 写一个程序,乞讨1+2*2+3*3+n*n值 Java
public static void main(String[] args) { // 1*1+2*2+3*3+n*n int n = 40; // 1 ...
- ASP.NET执行循序
首先第一次运行一个应用程序(WebSite或者WebApplication都是Web应用程序)第一次请求 -> 1,IIS -> 2,aspnet_isapi(非托管dll) -> ...
- HIPO图
HIPO图(Hierarchy Plus Input/Processing/Output)是表示软件结构的一种图形工具.以模块分解的层次性以及模块内部输入.处理.输出三大基本部分为基础建立的.它由两部 ...
- 开展:随笔记录 OSGI的jar增加了一些小问题和注意事项
在引用jar当包,假设引用的项目包.在需要MANIFEST.MF 它定义 一.外用jar: 实例:外部参考需要包装的Import package里面 定义一下.如:google-gson-2.2.2. ...