1776. Word Ladder

单点时限: 3.0 sec

内存限制: 256 MB

A word ladder is a sequence of words, in which two consecutive words differ by exactly

one letter. An example of such a ladder (usually arranged vertically, hence the “ladder”)

would be: beer, brew, brow, word, down. Note that to get from one word to the next, the

letters may be rearranged, and exactly one letter is changed.

For this problem, you will be given a dictionary of distinct words, all of the same length.

Your task is to write a program that finds a word ladder of minimal length, such that the

first and last word of the ladder have no letters in common.

输入格式

On the first line an integer t (1 <= t <= 100): the number of test cases. Then for each test

case:

1.A line with two space-separated integers n (2 <= n <= 100) and l (1 <= l <= 20): the

number of words and their length.

2.n lines with a word, each consisting of l lowercase letters (a - z).

输出格式

For each testcase:

  • a single line with the words in a ladder of minimal length, separated by a single space.

It is guaranteed that at least one such ladder can be constructed. If there is more than

one, output the one that comes first lexicographically.

Notes

If s and t are strings of equal length and si denotes the ith character of s, then s precedes

t lexicographically if for some i: si < ti and sj = tj for all j < i.

样例

Input
1
9 3
alt
spy
sea
opt
pea
ape
spa
apt
ale
Output
ale alt apt opt

1 人解决,8 人已尝试。

1 份提交通过,共有 37 份提交。

9.9 EMB 奖励。

创建: 17 年前.

修改: 7 年,2 月前.

最后提交: 15 年,7 月前.

来源: BAPC 2007

题目标签