题目链接:
https://www.luogu.org/problem/P3831
思路来源博客:
https://luogu-yizhimengxin.blog.luogu.org/solution-p3831
代码参考博客:
https://www.luogu.org/blog/l1ll5/solution-p3831
思路:
1:数组大小:
一开始看到这个题,n≤20000,m≤100000,完了,存图肯定爆了,后来发现不用把每个网格里的点都存下来,我们只需要把可以转弯的点存下来(包括起点和终点),(不然没法存啊)具体开多大见程序,因为m≤100000,加上起点,终点,因为是两层,所以开const int maxn=2e5+5
2.分层图最短路:
对一个可换乘的站在网格中横向和纵向可以走,我们可以建两层图,一层表示纵向边,一层表示横向边,转向就代表从一层图到另一层,然后跑一遍最短路就好
3.起点和终点
我们在输入可换乘的站时顺便输入了起点和终点,按输入顺序记录每一个站点,所以起点是m+1ÿ