AT_tenka1_2016_qualA_d グラフィカルグラフ
题目描述
*天下一株式会社正在开发一款用于可视化图论中图结构的软件。特别是,能够以文本为基础,清晰地显示不太复杂的图的工具非常受欢迎。*
给定一个有 $N$ 个顶点的无向树。每个顶点都被分配了一个不重复的大写英文字母(顶点数不超过 $26$)。
在 $N-1$ 条边中,第 $i$ 条边连接顶点 $v_i$ 和顶点 $w_i$。此外,保证任意一个顶点的度数不超过 $4$。
请编写程序,将给定的树按照如下方式进行可视化显示。详细要求见“输出格式”部分。
```
8 12
............
...D...E....
...|...|....
.C-A---B---F
.|.....|...|
.|.....G.J-I
.H..........
............
```
输入格式
输入通过标准输入给出,格式如下:
> $N$ $v_1$ $w_1$ $v_2$ $w_2$ $\ldots$ $v_{N-1}$ $w_{N-1}$
输出格式
请将输入的树以如下格式输出,共 $H+1$ 行:
> $H$ $W$ $c_{1,1}$ $c_{1,2}$ $\ldots$ $c_{1,W}$
> $c_{2,1}$ $c_{2,2}$ $\ldots$ $c_{2,W}$
> $\vdots$
> $c_{H,1}$ $c_{H,2}$ $\ldots$ $c_{H,W}$
其中:
- $H$ 和 $W$ 表示可视化输出的高度和宽度,用一个半角空格分隔。需满足 $1 \leq H \leq 100,\ 1 \leq W \leq 100$。
- 可视化输出由 $H$ 行 $W$ 列的字符矩阵组成。
- 每个字符 $c_{i,j}$ 只能是前 $N$ 个大写英文字母之一,或者 `.`、`-`、`|` 之一,并且需满足以下条件:
- 树的每个顶点用对应的大写字母表示,每个顶点在输出中恰好出现一次。
- 表示顶点的字母之间不能在纵向或横向上相邻。
- 若两个顶点 $a$ 和 $b$ 直接通过一条边相连,则必须满足下列条件之一:
- **(A)** 表示 $a$ 和 $b$ 的字母在同一行,中间所有字符均为 `-`。
- **(B)** 表示 $a$ 和 $b$ 的字母在同一列,中间所有字符均为 `|`。
- 若两个顶点 $a$ 和 $b$ 没有直接通过一条边相连,则禁止满足上述 **(A)** 或 **(B)** 的情况。
- 除了用于表示顶点和边的字符外,其余所有字符必须为 `.`。
对于满足约束条件的输入,必定存在符合要求的可视化输出。你可以输出任意一种符合要求的可视化方案。
说明/提示
### 约束条件
- $2 \leq N \leq 26$
- $v_i$、$w_i$ 均为前 $N$ 个大写英文字母之一。
- 输入保证是一棵树。
- 任意顶点的度数不超过 $4$。
### 样例解释 1
输出示例与题目描述中的示例相同。
### 样例解释 2
顶点字母与 `-` 或 `|` 在纵向或横向上相邻是允许的。
由 ChatGPT 4.1 翻译