33OJ
登录 注册

#ABC481D. 自动驾驶

自动驾驶

自动驾驶

题目描述

有 NN 颗行星和 MM 条航线。行星编号为 11 到 NN,航线编号为 11 到 MM。

第 ii 条航线从行星 AiA_i 单向通往行星 BiB_i。

一艘飞船可以执行下面两种操作:

  • 不消耗燃料,移动到「当前行星的所有航线终点中编号最小的那颗行星」;
  • 任选一条从当前行星出发的航线,移动到它的终点,消耗 11 单位燃料。

请求出飞船从行星 SS 出发、到达行星 TT 最少需要消耗多少单位燃料。如果无法到达行星 TT, 输出 −1-1。

输入格式

第一行四个整数 N,M,S,TN, M, S, T,用空格隔开。

接下来 MM 行,第 ii 行两个整数 Ai,BiA_i, B_i,用空格隔开,表示第 ii 条航线从行星 AiA_i 通往行星 BiB_i。

输出格式

输出一个整数,表示从行星 SS 到达行星 TT 最少需要消耗的燃料量;若无法到达,输出 −1-1。

7 10 2 1
2 5
2 4
4 2
4 3
3 1
3 5
3 6
5 6
6 1
6 7
1

样例 1 解释

按下面的顺序移动,可以从行星 22 到行星 11,共消耗 11 单位燃料:

  1. 从行星 22 不消耗燃料,移动到行星 44;
  2. 从行星 44 移动到行星 33,消耗 11 单位燃料;
  3. 从行星 33 不消耗燃料,移动到行星 11。
7 10 2 7
2 5
2 4
4 2
4 3
3 1
3 5
3 6
5 6
6 1
6 7
2

样例 2 解释

按下面的顺序移动,可以从行星 22 到行星 77,共消耗 22 单位燃料:

  1. 从行星 22 不消耗燃料,移动到行星 44;
  2. 从行星 44 不消耗燃料,移动到行星 22;
  3. 从行星 22 移动到行星 55,消耗 11 单位燃料;
  4. 从行星 55 不消耗燃料,移动到行星 66;
  5. 从行星 66 移动到行星 77,消耗 11 单位燃料。
2 1 1 2
2 1
-1

样例 3 解释

从行星 11 出发无法到达行星 22,所以输出 −1-1。

数据范围

对于所有测试数据,保证:

  • 2≤N≤2×1052 \le N \le 2 \times 10^5;
  • 1≤M≤2×1051 \le M \le 2 \times 10^5;
  • 1≤S,T≤N1 \le S, T \le N,且 S≠TS \ne T;
  • 1≤Ai,Bi≤N1 \le A_i, B_i \le N,且 Ai≠BiA_i \ne B_i(1≤i≤M1 \le i \le M);
  • 不同的航线可以连接同一对行星,即 (Ai,Bi)(A_i, B_i) 允许重复出现;
  • 所有输入值均为整数。

子任务

本题共 20 个测试点,按测试点计分:

测试点 分值 每个测试点 特殊限制
1∼61 \sim 6 3030 55 N,M≤2000N, M \le 2000
7∼207 \sim 20 7070 无特殊限制

每个测试点单独评分,全部测试点的得分之和即为本题得分。