CF2068E.Porto Vs. Benfica

省选/NOI-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

FC Porto 和 SL Benfica 是葡萄牙最大的两个足球俱乐部。当两队比赛时,大量球迷会从全国各地前往观赛,其中包括计划从里斯本前往波尔图的 Benfica 球迷俱乐部。为避免与 Porto 球迷俱乐部发生冲突,警方希望尽可能延迟他们的到达时间。

葡萄牙的公路网可建模为一个简单、无向、无权、连通的图,包含 nn 个顶点和 mm 条边。顶点代表城镇,边代表道路。顶点 11 对应里斯本(球迷的起点),顶点 nn 对应波尔图(球迷的目的地)。球迷俱乐部希望最小化前往波尔图所经过的道路数量。

警方始终密切追踪球迷的位置。为延迟其到达,警方可在任意时刻封锁一条道路(前提是球迷当前不在该道路上通行)。此操作只能执行一次,且被封锁的道路将永久不可用。封锁后,球迷会立即得知该信息并调整路线。同时球迷知晓警方会封锁某条道路,并据此规划路线。

假设双方均采取最优策略,求球迷从里斯本到波尔图所需经过的最少道路数量。若警方能永久阻止球迷到达波尔图,则输出 −1-1。

输入格式

第一行包含两个整数 nn 和 mm(2≤n≤200 0002 \leq n \leq 200\,000,n−1≤m≤min⁡{n(n−1)/2,200 000}n - 1 \leq m \leq \min\{n(n - 1)/2, 200\,000\})——城镇数量和道路数量。

接下来 mm 行每行包含两个整数 sis_i 和 tit_i(1≤si,ti≤n1 \leq s_i, t_i \leq n)——表示第 ii 条道路连接的两个城镇。

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

输出格式

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

输入输出样例

  • 输入#1

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

    输出#1

    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
  • 输入#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

说明/提示

第一个样例的公路网结构如下:


警方最优策略是等待球迷到达与目的地相邻的顶点(如顶点 55)后封锁该顶点到目的地的边。球迷最优策略是先沿上方路径(1→21 \rightarrow 2),在发现 22 到 55 的边被封锁后,返回 2→12 \rightarrow 1 并沿下方路径(1→3→4→51 \rightarrow 3 \rightarrow 4 \rightarrow 5)。此时经过的道路总数为 55。

第二个样例的公路网结构如下:


存在多种策略,但最优方案为:球迷沿上方路径(1→2→3→4→51 \rightarrow 2 \rightarrow 3 \rightarrow 4 \rightarrow 5),警方封锁边 5→115 \rightarrow 11,球迷绕行 5→4→3→6→7→115 \rightarrow 4 \rightarrow 3 \rightarrow 6 \rightarrow 7 \rightarrow 11。总经过道路数为 99。

第三个样例的公路网结构如下:


警方最优策略为:若球迷到达顶点 22 则封锁边 2→32 \rightarrow 3,若到达顶点 55 则封锁边 5→65 \rightarrow 6。球迷最优路径为 1→2→1→5→6→81 \rightarrow 2 \rightarrow 1 \rightarrow 5 \rightarrow 6 \rightarrow 8,总经过道路数为 55。

翻译由 DeepSeek R1 完成

输入解题思路,AI测评打分。不知道怎么写?

首页