QOJ.ac

QOJ

Time Limit: 2 s Memory Limit: 2048 MB Total points: 100

#10314. Porto Vs. Benfica

الإحصائيات

波尔图足球俱乐部(FC Porto)和本菲卡足球俱乐部(SL Benfica)是葡萄牙最大的两支足球队。自然地,当这两支球队交手时,全国各地会有许多人前往观看比赛。这其中包括本菲卡球迷俱乐部,他们将从里斯本前往波尔图观看即将到来的比赛。为了避免他们与波尔图球迷俱乐部之间产生紧张关系,国家警察希望尽可能推迟他们到达波尔图的时间。

葡萄牙的公路网可以建模为一个简单的、无向的、无权重的连通图,包含 $n$ 个顶点和 $m$ 条边,其中顶点代表城镇,边代表道路。顶点 1 对应里斯本(即球迷俱乐部的出发点),顶点 $n$ 对应波尔图(即球迷俱乐部的目的地)。球迷俱乐部希望最小化他们到达波尔图所经过的道路数量。

警察一直在密切关注球迷俱乐部,因此他们总是知道球迷俱乐部所在的位置。为了推迟他们的到达,警察可以在任何时候选择恰好一条道路并将其封锁,前提是球迷俱乐部当前没有正在通过该道路。警察只能执行此操作一次,一旦封锁,该道路将永久关闭。一旦警察封锁了一条道路,球迷俱乐部会立即得知该道路已被封锁,并可以根据需要更改路线。此外,球迷俱乐部知道警察计划封锁某条道路,并可以据此规划路线。

假设球迷俱乐部和警察都始终做出最优选择,请确定球迷俱乐部从里斯本前往波尔图所需经过的最少道路数量。如果警察能够阻止球迷俱乐部到达波尔图,则输出 $-1$。

输入格式

第一行包含两个整数 $n$ 和 $m$ ($2 \le n \le 200\,000$, $n-1 \le m \le \min\{n(n-1)/2, 200\,000\}$),分别表示城镇数量和公路网中的道路数量。

接下来的 $m$ 行,每行包含两个整数 $s_i$ 和 $t_i$ ($1 \le s_i, t_i \le n$),表示第 $i$ 条道路连接的两个城镇。

保证公路网是连通的,每条道路连接两个不同的城镇,且没有重复的道路。

输出格式

输出球迷俱乐部从里斯本前往波尔图所需经过的最少道路数量。

样例

输入 1

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

输出 1

5

说明 1

公路网如下图所示:

注意,警察的最优策略是等待球迷俱乐部到达目的地(即顶点 5)的相邻顶点,然后封锁连接该顶点与目的地的边。球迷俱乐部的最优策略是沿上方的路径走(从 1 到 2),在看到 2 到 5 之间的边被封锁后,他们会折返经过 2 回到 1,然后沿下方的路径(1 到 3 到 4 到 5)走。在这种情况下,经过的道路总数为 5。

输入 2

11 12
1 2
2 3
3 4
4 5
5 11
3 6
6 7
7 11
1 8
8 9
9 10
10 11

输出 2

9

说明 2

公路网如下图所示:

这里有多种策略,但可以验证,对于警察和球迷俱乐部双方而言,最优策略是沿上方的路径($1 \to 2 \to 3 \to 4 \to 5$)走,然后警察封锁 5 到 11 的边,因此球迷俱乐部绕道走 $5 \to 4 \to 3 \to 6 \to 7 \to 11$。该策略下经过的道路总数为 9。

输入 3

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

输出 3

5

说明 3

公路网如下图所示:

警察的最优策略是:如果球迷俱乐部到达顶点 2,则封锁 2 到 3 的边;或者如果球迷俱乐部到达顶点 5,则封锁 5 到 6 的边。在这种情况下,最优路径是 $1 \to 2 \to 1 \to 5 \to 6 \to 8$。该策略下经过的道路总数为 5。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.