AT_abc021_b.[ABC021B] 嘘つきの高橋くん
普及-
通过率:0%
AC君温馨提醒
该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
你和高桥君住在 AtCoder 王国。AtCoder 王国有 N 个城镇,以及若干条连接城镇之间的道路,道路是双向通行的。N 个城镇分别被称为城镇 1、城镇 2、……、城镇 N。
高桥君决定去你家玩。他从城镇 a 出发,经过 AtCoder 王国的某些城镇,恰好经过 K 次后,抵达你家所在的城镇 b。
高桥君声称他是沿着从 a 到 b 的最短路径前来的,但你觉得他可能在说谎。然而,你完全不知道城镇之间道路的具体连接方式,因此无法直接判断高桥君所走的路线是否为最短路径。
你成功地问出了高桥君经过的城镇的顺序,但这个信息不包括出发地 a 和终点 b。
请你根据这些信息,编写一个程序判断高桥君是否有可能是沿着最短路径移动的。这里,从 a 到 b 的最短路径指的是经过的道路数最少的路径。
如果存在至少一种城镇和道路的连接方式,使得高桥君所走的路径是最短路径,则输出“YES”;否则输出“NO”。
输入格式
输入按以下格式从标准输入读入。
N a b K P1 P2 … PK
- 第 1 行给出 AtCoder 王国中城镇的数量 N,满足 2≤N≤100。
- 第 2 行给出高桥君出发的城镇和你家所在城镇的编号 a,b,满足 1≤a,b≤N,且 a=b。
- 第 3 行给出高桥君移动过程中经过的城镇数 K,满足 1≤K≤100。
- 第 4 行给出高桥君移动过程中依次经过的城镇编号,空格分隔。第 i 个数 Pi 表示高桥君从 a 出发后第 i 个经过的城镇编号,1≤Pi≤N。
- 相邻的 Pi 必然不同,即对于所有 j(2≤j≤K),都有 Pj=Pj−1。此外,P1=a 且 PK=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→5 这条路径就是最短路径。

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

样例解释 3
路径为 1→2→1→3→4,即途中又回到了出发点。这样就不可能是最短路径。
样例解释 4
路径为 1→2→4→3→4,即途中已经到达终点却又离开了终点。
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?