#ijpc2015c. [ijpc2015_c]しりとり木

[ijpc2015_c]しりとり木

问题文

给定一个由小写英文字母构成的字符串,有mm个字符串。

对于每个字符串,判断是否存在一个由mm个顶点组成的根树,满足以下条件:

  • 除了叶子节点外,每个节点都有正好两个子节点。
  • 如果节点ii是节点cc的父节点,则第ii个字符串的最后一个字符与第cc个字符串的第一个字符相等。

如果存在,构造这样的树。

13:35 修正问题文中的拼写错误

很抱歉,由于B问题的测试用例有误,将在16:30之后添加测试用例。(16:10)


输入

输入从标准输入中给出,具有以下格式:

NN s1s_1 . . . sNs_N

  • 第一行是一个整数 N(1N104)N(1≤N≤10^4),表示字符串的数量。
  • 接下来的 NN 行是字符串。第 i+1(1iN)i+1 (1≤i≤N) 行表示第 ii 个字符串。
  • 每个字符串的长度在1到10之间。

部分分

此问题不设置部分分。

考虑到对比赛的影响,对传统测试用例给出99分,对所有测试用例给出1分。(16:32)

输出

输出到标准输出中,末尾要加换行符。

如果不存在满足条件的树,输出"NO"。

如果存在满足条件的树,输出共 N+1N+1 行。第一行输出"YES",接下来的 i+1(1iN)i+1 (1≤i≤N) 行表示第 ii 个字符串的父节点的编号。如果第 ii 个字符串是根节点,则输出0。


输入示例1

5
ab
bc
bd
de
df

输出示例1

YES
0
1
1
3
3

输入示例2

7
yokozuna
takayuta
namonaki
reew
semiexp
snuke
tozangezan

输出示例2

NO

输入示例3

1
i

输出示例3

YES
0