D. 一次逆行

    传统题 1000ms 256MiB

一次逆行

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

一次逆行

题目描述

给定一张有 nn 个点、mm 条边的有向图,点的编号为 11nn

你需要从点 ss 出发,到达点 tt

正常情况下,你只能沿着有向边的方向移动。也就是说,如果存在一条边 uvu \to v,那么你可以从 uu 走到 vv

但是在整个过程中,你可以最多一次逆向经过某条边。

也就是说,如果存在一条边 uvu \to v,你可以选择一次从 vv 走到 uu

你也可以不使用这次逆行机会。

每经过一条边,无论是正向还是逆向,代价都为 11

请你求出从 sstt 的最小代价。

特别地,如果 s=ts=t,答案为 00

如果无法到达,输出 -1

输入格式

第一行输入四个整数 n,m,s,tn,m,s,t,分别表示点数、边数、起点和终点。

接下来 mm 行,每行输入两个整数 u,vu,v,表示存在一条从 uuvv 的有向边。

数据范围:

对于所有测试数据,满足:

2n2×1052 \le n \le 2 \times 10^5 0m2×1050 \le m \le 2 \times 10^5 1s,tn1 \le s,t \le n 1u,vn, uv1 \le u,v \le n,\ u \ne v

保证不存在重复的有向边。

注意,可能同时存在 uvu \to vvuv \to u

输出格式

输出一个整数,表示从 sstt 的最小代价。

如果无法到达,输出 -1

输入输出样例 #1

输入 #1

5 4 1 5
1 2
3 2
3 4
4 5

输出 #1

4

输入输出样例 #2

输入 #2

4 3 1 4
2 1
3 2
3 4

输出 #2

-1

说明/提示

存在边 323 \to 2

正常情况下不能从 22 走到 33,但可以使用一次逆行,从 22 逆向经过这条边到达 33

因此可以走:

1 -> 2 -> 3 -> 4 -> 5

总代价为 44

【睿爸信奥】入门组算法周赛(20260613)

未参加
状态
已结束
规则
IOI
题目
4
开始于
2026-6-13 0:00
结束于
2026-6-20 0:00
持续时间
4 小时
主持人
参赛人数
19