最短路专题1 | CodeForces 601A - 混合Dijkstra算法

最短路专题1 | CodeForces 601A - 混合Dijkstra算法

前言

这个十一没有出去玩,花了一些时间在写之前提过的markdown编辑器,本文就是用这个编辑器写的2333,今天准备写咱们的新专题 — 最短路。另外之前提过专题的题目主要使用kuangbin系列,现在改变主意了,专题题目全部使用CodeForces上的题目,原因主要是POJ等国内的OJ系统不能看源代码,而且题目质量稍微欠缺一些,然后没有区分度。

CodeForces能够看到高手写的代码,题目质量相对好些,然后每个题目的难易都用a/b/c/d标明了。
OK,开始看题。

601A. The Two Routes

In Absurdistan, there are n towns (numbered 1 through n) and m bidirectional railways. There is also an absurdly simple road network — for each pair of different towns x and y, there is a bidirectional road between towns x and y if and only if there is no railway between them. Travelling to a different town using one railway or one road always takes exactly one hour.
有n个城市,m个双向铁轨。还有一个公路网络,对于每一对城镇x和y,如果它们没有铁路,那么就一定会有公路。去一个不同的城镇,不管是铁路还是公路,都需要一个小时。

A train and a bus leave town 1 at the same time. They both have the same destination, town n, and don’t make any stops on the way (but they can wait in town n). The train can move only along railways and the bus can move only along roads.
火车和汽车从1号站同时离开,同时开往n。

You’ve been asked to plan out routes for the vehicles; each route can use any road/railway multiple times. One of the most important aspects to consider is safety — in order to avoid accidents at railway crossings, the train and the bus must not arrive at the same town (except town n) simultaneously.
你需要计划一下出行的方案,每一条线路都能够使用公路或者铁路。为了避免意外发生,火车和汽车不能够同时到达同一个城镇(n除外)。

Under these constraints, what is the minimum number of hours needed for both vehicles to reach town n (the maximum of arrival times of the bus and the train)? Note, that bus and train are not required to arrive to the town n at the same moment of time, but are allowed to do so.

Input

The first line of the input contains two integers n and m (2 ≤ n ≤ 400, 0 ≤ m ≤ n(n - 1) / 2) — the number of towns and the number of railways respectively.
第一行包含2个整数n和m,n是城市的数量,m是铁路的数量。

Each of the next m lines contains two integers u and v, denoting a railway between towns u and v (1 ≤ u, v ≤ n, u ≠ v).
下面的m行表示路线

You may assume that there is at most one railway connecting any two towns.

Output

Output one integer — the smallest possible time of the later vehicle’s arrival in town n. If it’s impossible for at least one of the vehicles to reach town n, output  - 1.
输出最短路径

Examples

input
4 2
1 3
3 4

output
2

Note
In the first sample, the train can take the route 1 → 3 → 4 1\to3\to4

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值