1131 Subway Map地铁地图(邻接表+dijkstra堆优化附模板)

传送门

找出⼀条路线,使得对任何给定的起点和终点,可以找出中途经停站最少的路线;如果经停站⼀样多,则取需要换乘线路次数最少的路线
 
PAT中的图论最恶心难的题,根据题目描述可以看出是道最短路的题,但是本题还要求输出每条最短路的来源和线路,处理起来较为麻烦。
考虑把每条线路中的所有站点都连一条带权值的双向边,这样一来可以方便求出两点之间的最短路。
但是这样建图的缺点是边数巨多,朴素版的dijkstra会超时。这时我们需要堆优化版本的dijkstra
在求最短路的过程中如果进行更新,将最短路的来源和线路存储起来。
其他需要注意的点:线路中可能存在环路,输出时站点号码需要补0
 
#include<bits/stdc++.h>
#define rep(i,a,n) for(int i=a;i<n;i++)
#define PII pair<int,int>
#define x first
#define y second
#define INF 0x3f3f3f3f
using namespace std;
const int N=1e4+10;
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值