2245. DNA Laboratory

单点时限: 5.0 sec

内存限制: 256 MB

Having started to build his own DNA lab just recently, the evil doctor Frankenstein is not quite up to date yet. He wants to extract his DNA, enhance it somewhat and clone himself. He has already figured out how to extract DNA from some of his blood cells, but unfortunately reading off the DNA sequence means breaking the DNA into a number of short pieces and analyzing those first. Frankenstein has not quite understood how to put the pieces together to recover the original sequence.

His pragmatic approach to the problem is to sneak into university and to kidnap a number of smart looking students. Not surprisingly, you are one of them, so you would better come up with a solution pretty fast.

You are given a list of strings over the alphabet A (for adenine), C (cytosine), G (guanine), and T (thymine),and your task is to find the shortest string (which is typically not listed) that contains all given strings as substrings.

If there are several such strings of shortest length, find the smallest in alphabetical/lexicographical order.


The first line contains the number of scenarios.

For each scenario, the first line contains the number $n$ of strings with $1 \le n \le 15$. Then these strings with $1 \le \mathrm{length} \le 100$ follow, one on each line, and they consist of the letters A, C, G, and T only.


The output for every scenario begins with a line containing Scenario #i:, where i is the number of the scenario starting at $1$. Then print a single line containing the shortest (and smallest) string as described above. Terminate the output for the scenario with a blank line.


Scenario #1:

1 人解决,3 人已尝试。

5 份提交通过,共有 41 份提交。

9.9 EMB 奖励。

创建: 15 年,7 月前.

修改: 6 年,4 月前.

最后提交: 11 月,1 周前.

来源: TUD Programming Contest 2004, Darmstadt, Germany