AT_abc021_b.[ABC021B] 嘘つきの高橋くん

普及-

通过率:0%

AC君温馨提醒

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

题目描述

你和高桥君住在 AtCoder 王国。AtCoder 王国有 NN 个城镇,以及若干条连接城镇之间的道路,道路是双向通行的。NN 个城镇分别被称为城镇 11、城镇 22、……、城镇 NN。

高桥君决定去你家玩。他从城镇 aa 出发,经过 AtCoder 王国的某些城镇,恰好经过 KK 次后,抵达你家所在的城镇 bb。

高桥君声称他是沿着从 aa 到 bb 的最短路径前来的,但你觉得他可能在说谎。然而,你完全不知道城镇之间道路的具体连接方式,因此无法直接判断高桥君所走的路线是否为最短路径。

你成功地问出了高桥君经过的城镇的顺序,但这个信息不包括出发地 aa 和终点 bb。

请你根据这些信息,编写一个程序判断高桥君是否有可能是沿着最短路径移动的。这里,从 aa 到 bb 的最短路径指的是经过的道路数最少的路径。

如果存在至少一种城镇和道路的连接方式,使得高桥君所走的路径是最短路径,则输出“YES”;否则输出“NO”。

输入格式

输入按以下格式从标准输入读入。

NN aa bb KK P1P_1 P2P_2 … PKP_K

  • 第 11 行给出 AtCoder 王国中城镇的数量 NN,满足 2≤N≤1002 \leq N \leq 100。
  • 第 22 行给出高桥君出发的城镇和你家所在城镇的编号 a,ba, b,满足 1≤a,b≤N1 \leq a, b \leq N,且 a≠ba \neq b。
  • 第 33 行给出高桥君移动过程中经过的城镇数 KK,满足 1≤K≤1001 \leq K \leq 100。
  • 第 44 行给出高桥君移动过程中依次经过的城镇编号,空格分隔。第 ii 个数 PiP_i 表示高桥君从 aa 出发后第 ii 个经过的城镇编号,1≤Pi≤N1 \leq P_i \leq N。
  • 相邻的 PiP_i 必然不同,即对于所有 jj(2≤j≤K2 \leq j \leq K),都有 Pj≠Pj−1P_j \neq P_{j-1}。此外,P1≠aP_1 \neq a 且 PK≠bP_K \neq b。

输出格式

输出一行。如果高桥君有可能是沿着最短路径移动的,输出 YES;否则输出 NO。

注意输出末尾需要换行。

输入输出样例

  • 输入#1

    5
    1 5
    3
    3 4 2

    输出#1

    YES
  • 输入#2

    7
    1 3
    4
    2 4 2 7

    输出#2

    NO
  • 输入#3

    4
    1 4
    3
    2 1 3

    输出#3

    NO
  • 输入#4

    4
    1 4
    3
    2 4 3

    输出#4

    NO
  • 输入#5

    20
    1 4
    12
    2 3 5 7 8 9 10 11 12 15 13 14

    输出#5

    YES

说明/提示

样例解释 1

例如,考虑如下道路结构,则 1→3→4→2→51 \to 3 \to 4 \to 2 \to 5 这条路径就是最短路径。

样例解释 2

不存在任何一种道路结构,使得 1→2→4→2→7→31 \to 2 \to 4 \to 2 \to 7 \to 3 这条路径为最短路径。因为无论道路如何连接,路径中如果有重复经过某个城镇,总可以省略这些重复,从而得到更短的路径。

样例解释 3

路径为 1→2→1→3→41 \to 2 \to 1 \to 3 \to 4,即途中又回到了出发点。这样就不可能是最短路径。

样例解释 4

路径为 1→2→4→3→41 \to 2 \to 4 \to 3 \to 4,即途中已经到达终点却又离开了终点。

由 ChatGPT 4.1 翻译

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

首页