PAT 1131 Subway Map

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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

说文科技

看书人不妨赏个酒钱?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值