PAT 1131 Subway Map (C++版)【updating…】
1.题意
给出一个城市的地铁信息,让你输出从始发站start到终点站end之间的最少车站的路线,如果有多条线路的站数一致,则输出换乘最少的路线。
2.分析
主要问题如下:
- 1.如何标志是否换乘?【其实本题就这么一个弯儿】
使用一个unordered_map<int, int> line;
用于标记这两个站之间的到底是几号线。因为得到的路线是按照站台依次进行的,所以依次保存两个站台之间的线路信息即可。
上面的问题分析完成就可以很好的解决这道题了。主要实现步骤如下: - step1:使用dijkstra算法找出最短路径
- step2:使用dfs找出这些最短路径中的最优的解
这题跟 1018 Public Bike Management 是惊人的相似。【在后来的练习中,发现1018相对这题来说简直太简单了,因为本体还需要处理大节点转换的问题,十分复杂!所以说1018那种dijkstra+dfs
的方式几乎不可以在本题中使用】 但是这题都使用dfs解决会更加方便。
3.代码
待更新。。。
4.测试用例
4
7 1001 3212 1003 1204 1005 1306 7797
9 9988 2333 1204 2006 2005 2004 2003 2302 2001
13 3011 3812 3013 3001 1306 3003 2333 3066 3212 3008 2302 3010 3011
4 6666 8432 4011 1306
3
3011 3013
6666 2001
2004 3001
5.其它
- 至于为何本题不使用
dijkstra
算法的原因可参考我的博文:dijkstra
算法总结 中的问题1;