题目链接:http://acm.hdu.edu.cn/status.php?user=l1526789512&pid=2112&status=5

HDU Today

Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 22918    Accepted Submission(s): 5483

Problem Description
经过锦囊相助,海东集团终于度过了危机,从此,HDU的发展就一直顺风顺水,到了2050年,集团已经相当规模了,据说进入了钱江肉丝经济开发区500强。这时候,XHD夫妇也退居了二线,并在风景秀美的诸暨市浬浦镇陶姚村买了个房子,开始安度晚年了。
这样住了一段时间,徐总对当地的交通还是不太了解。有时很郁闷,想去一个地方又不知道应该乘什么公交车,在什么地方转车,在什么地方下车(其实徐总自己有车,却一定要与民同乐,这就是徐总的性格)。
徐总经常会问蹩脚的英文问路:“Can you help me?”。看着他那迷茫而又无助的眼神,热心的你能帮帮他吗?
请帮助他用最短的时间到达目的地(假设每一路公交车都只在起点站和终点站停,而且随时都会开)。
 
Input
输入数据有多组,每组的第一行是公交车的总数N(0<=N<=10000);
第二行有徐总的所在地start,他的目的地end;
接着有n行,每行有站名s,站名e,以及从s到e的时间整数t(0<t<100)(每个地名是一个长度不超过30的字符串)。
note:一组数据中地名数不会超过150个。
如果N==-1,表示输入结束。
 
Output
如果徐总能到达目的地,输出最短的时间;否则,输出“-1”。
 
Sample Input
6
xiasha westlake
xiasha station 60
xiasha ShoppingCenterofHangZhou 30
station westlake 20
ShoppingCenterofHangZhou supermarket 10
xiasha supermarket 50
supermarket westlake 10
-1
 
Sample Output
50

Hint:
The best route is:
xiasha->ShoppingCenterofHangZhou->supermarket->westlake

虽然偶尔会迷路,但是因为有了你的帮助
**和**从此还是过上了幸福的生活。

――全剧终――

 
思路:建图的时候略坑。建完图过后floyd和dijkstra。
建图使用stl中的map。
map<string,int> m;
m.clear();  //清空
可以有m[a]这种用法;
m.begin();  //返回该map中第一个元素的迭代器
m.end();  //返回该map中最后一个元素的迭代器
m.find();  //若找到返回给元素的迭代器,否则返回最后一个元素的迭代器
distance函数  //可通过两迭代器找下标
更多关于map的东西还需继续学习。
 
  1. #include<iostream>
  2. #include<cstdio>
  3. #include<algorithm>
  4. #include<cstring>
  5. #include<map>
  6. using namespace std;
  7. #define INF 999999999
  8.  
  9. int mapp[][],flag;
  10. int dist[];
  11. int n;
  12.  
  13. /*
  14. void floyd()
  15. {
  16. for(int k=0; k<flag; k++)
  17. for(int i=0; i<flag; i++)
  18. for(int j=0; j<flag; j++)
  19. if(mapp[i][j]>mapp[i][k]+mapp[k][j])
  20. mapp[i][j]=mapp[i][k]+mapp[k][j];
  21. }
  22. */
  23.  
  24. void Dijkstra(int v0)
  25. {
  26. int S[];
  27. for(int i=; i<flag; i++)
  28. {
  29. dist[i]=mapp[v0][i];
  30. S[i]=;
  31. }
  32. dist[v0]=;
  33. S[v0]=;
  34. for(int j=; j<flag;j++)
  35. {
  36. int flag1=;
  37. int mindist=INF;
  38. for(int i=; i<flag; i++)
  39. {
  40. if(!S[i]&&dist[i]<mindist)
  41. {
  42. mindist=dist[i];
  43. flag1=i;
  44. }
  45. }
  46. S[flag1]=;
  47. for(int i=; i<flag;i++)
  48. {
  49. if(!S[i]&&mapp[flag1][i]<INF&&dist[i]>dist[flag1]+mapp[flag1][i])
  50. dist[i]=dist[flag1]+mapp[flag1][i];
  51. }
  52. }
  53. }
  54.  
  55. int main()
  56. {
  57. char a[],b[];
  58. int x,f;
  59. map<string ,int> m;
  60. while(scanf("%d",&n)!=EOF&&n!=-)
  61. {
  62. f=;
  63. m.clear();
  64. scanf("%s%s",a,b);
  65. if(strcmp(a,b)==)
  66. f=;
  67. m[a]=;
  68. m[b]=;
  69. flag=;
  70. for(int i=; i<; i++)
  71. {
  72. dist[i]=INF;
  73. for(int j=; j<; j++)
  74. {
  75. if(i==j)
  76. mapp[i][j]=;
  77. else
  78. mapp[i][j]=INF;
  79. }
  80. }
  81. for(int i=; i<n; i++)
  82. {
  83. scanf("%s%s%d",a,b,&x);
  84. //cout<<a<<b<<x<<"*"<<endl;
  85. if(m.find(a)==m.end())
  86. m[a]=flag++;
  87. if(m.find(b)==m.end())
  88. m[b]=flag++;
  89. if(x<mapp[m[a]][m[b]])
  90. {
  91. mapp[m[a]][m[b]]=x;
  92. mapp[m[b]][m[a]]=x;
  93. }
  94. }
  95. if(f==)
  96. {
  97. printf("0\n");
  98. continue;
  99. }
  100. Dijkstra();
  101. if(dist[]==INF)
  102. printf("-1\n");
  103. else
  104. printf("%d\n",dist[]);
  105.  
  106. }
  107. return ;
  108. }

HDU_2112_最短路的更多相关文章

  1. bzoj1001--最大流转最短路

    http://www.lydsy.com/JudgeOnline/problem.php?id=1001 思路:这应该算是经典的最大流求最小割吧.不过题目中n,m<=1000,用最大流会TLE, ...

  2. 【USACO 3.2】Sweet Butter(最短路)

    题意 一个联通图里给定若干个点,求他们到某点距离之和的最小值. 题解 枚举到的某点,然后优先队列优化的dijkstra求最短路,把给定的点到其的最短路加起来,更新最小值.复杂度是\(O(NElogE) ...

  3. Sicily 1031: Campus (最短路)

    这是一道典型的最短路问题,直接用Dijkstra算法便可求解,主要是需要考虑输入的点是不是在已给出的地图中,具体看代码 #include<bits/stdc++.h> #define MA ...

  4. 最短路(Floyd)

    关于最短的先记下了 Floyd算法: 1.比较精简准确的关于Floyd思想的表达:从任意节点A到任意节点B的最短路径不外乎2种可能,1是直接从A到B,2是从A经过若干个节点X到B.所以,我们假设maz ...

  5. bzoj1266最短路+最小割

    本来写了spfa wa了 看到网上有人写Floyd过了 表示不开心 ̄へ ̄ 改成Floyd试试... 还是wa ヾ(。`Д´。)原来是建图错了(样例怎么过的) 结果T了 于是把Floyd改回spfa 还 ...

  6. HDU2433 BFS最短路

    Travel Time Limit: 10000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Sub ...

  7. 最短路(代码来源于kuangbin和百度)

    最短路 最短路有多种算法,常见的有一下几种:Dijstra.Floyd.Bellman-Ford,其中Dijstra和Bellman-Ford还有优化:Dijstra可以用优先队列(或者堆)优化,Be ...

  8. Javascript优化细节:短路表达式

    什么是短路表达式? 短路表达式:作为"&&"和"||"操作符的操作数表达式,这些表达式在进行求值时,只要最终的结果已经可以确定是真或假,求值过程 ...

  9. Python中三目计算符的正确用法及短路逻辑

    今天在看别人代码时看到这样一种写法, 感觉是个挺容易踩到的坑, 搞清楚后写出来备忘. 短路逻辑 Python中进行逻辑运算的时候, 默认采用的是一种叫做短路逻辑的运算规则. 名字是很形象的, 下面直接 ...

随机推荐

  1. vbs io file

    <% ''/*******************************二进制文件操作类************************************ ''/*作者:死在水中的鱼(死 ...

  2. 解决burp suite 使用chrome訪问https失真的问题

    用burp suite 訪问https网页 尤其使用chrome(有时候firefox也会) 会出现js或者css载入不出来的情况 这样的时候,导出burp suite的证书,保存为cer格式 然后进 ...

  3. Spring中定时器实现

    在Spring 中使用Quartz,本文介绍Spring3.0以后自主开发的定时任务工具,spring task,可以将它比作一个轻量级的Quartz,而且使用起来很简单,除spring相关的包外不需 ...

  4. 大文本 通过 hadoop spark map reduce 获取 特征列 的 属性值 计算速度

    大文本 通过 hadoop spark map reduce   获取 特征列  的 属性值  计算速度

  5. ImportError: cannot import name _imaging

    python - No module named 'PIL' - Stack Overflow  https://stackoverflow.com/questions/49247310/no-mod ...

  6. c#调用oracle存储过程返回数据集

    c#调用oracle存储过程返回数据集 2008-12-20 10:59:57|  分类: net|字号 订阅   CREATE OR REPLACE PACKAGE pkg_tableTypeIS  ...

  7. Java 系统工具类 —— System、Scanner、Runtime

    0. 静态成员变量 System.out:是 PrinterStream 型变量: public final class System { ... public final static InputS ...

  8. 洛谷P1297 单选错位——期望

    题目:https://www.luogu.org/problemnew/show/P1297 读懂题后就变得很简单啦: 对于一个问题和它的下一个问题,我们考虑: 设上一个问题有 a 个选项,下一个问题 ...

  9. gitlab https

    https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/install/installation.md#using-https https:// ...

  10. “ResGen.exe”已退出,代码为 -1073741701 或 “ResGen.exe”已退出,代码为 2。

    解决的办法如下: 1.关闭所有Visual Studio: 2.以管理员的身份打开命令提示窗口:(开始-运行-cmd) 3.更改目录至"CD C:\Program Files (x86)\M ...