AT_arc011_3.[ARC011C] ダブレット

提高+/省选-

通过率:0%

AC君温馨提醒

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

题目描述

你正在玩一个单词接龙游戏。

一个单词可以变换为另一个单词,当且仅当这两个单词恰有一个字母不同。

给定起始单词 firstfirst 和目标单词 lastlast,以及一个含有 NN 个单词的 可重 词集 {s0,s1,...,sN−1}\{s_0,s_1,...,s_{N-1}\}。请回答,在只使用词集中的词进行变换的情况下,从 firstfirst 变换到 lastlast 最少需要多少步 (所使用的词集中的词的个数),并给出一组方案。

特别地:

  • 若 firstfirst 和 lastlast 相同,则步数为 00;
  • 若无法完成变换,仅输出一行 -1 即可;
  • 若 firstfirst 只经过一次变换即可得到 lastlast,则步数也为 00。(这段话原题没写)

输入格式

第一行输入两个单词 firstfirst 和 lastlast。

第二行输入一个正整数 NN,表示词集大小。

第三行到第 (N+2)(N+2) 行,每行输入一个单词 sis_i 表示词集中的一个词。

输出格式

若无法完成变换,仅输出一行一个整数 -1。

否则,按如下格式输出:

  • 第一行输出一个整数 kk,表示中间词的个数;
  • 接下来 (k+2)(k+2) 行,每行一个单词。这 (k+2)(k+2) 行展示的即为从 firstfirst 变换至 lastlast 的一种可能的过程。

若有多解,输出任一解即可。

输出末尾换行。

输入输出样例

输入 #1

eye lid
4
lie
die
did
dye

输出 #1

3
eye
dye
die
lie
lid

输入 #2

eye eye
4
lie
die
did
dye

输出 #2

0
eye
eye

输入 #3

eye lid
4
lie
lip
did
dye

输出 #3

-1

说明/提示

  • 1≤N≤1 0001\le N\le 1\ 000;
  • 词集中可能含有重复的单词,也可能含有 firstfirst 和 lastlast;
  • 输入的每个单词长度都相同,且该长度 LL 满足 1≤L≤301\le L\le 30;
  • 每个单词仅由英文小写字母 a-z 构成。

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

首页