P1127 Word Chain
P1127 Word Chain 我理解的题目意思 找到所有单词的一种字典序最小的排列,使每个单词恰好使用一次,并且相邻两个单词满足前一个单词的尾字符等于后一个单词的首字符。 输入n个单词,相同的单词若出现了 k 次就需要输出 k 次。 $$1≤n≤1000$$解题思路 这个问题可以转化为有向多重图中的欧拉路径问题。 构造有向多重图 G=(V,E),具体定义如下: 顶点集合 V:每个出现在任意单词首字符或尾字符中的字母对应一个顶点。 边集合 E:每个给定单词 S_i 对应一条有向边,其起点为单词的首字符,终点为单词的尾字符。即使两个单词的首尾字符相同,也将它们视为不同的边。 目标:找到所有单词的一种排列,使每个单词恰好使用一次,并且相邻两个单词满足前一个单词的尾字符等于后一个单词的首字符。 合法的单词排列与图中的欧拉路径一一对应。如果路径的起点与终点相同,则称其为欧拉回路。 进一步定义顶点的度数差: $\Delta(v)=out\_deg(v)-in\_deg(v)$ 欧拉路径存在的基本条件是: 所有与边关联的顶点必须属于同一个弱连通分量。 以下两种度数情况至少满足一种: 所有顶点的入度与出度相等; 恰好有一个顶点的度数差为 1,恰好有一个顶点的度数差为 -1,其余顶点的度数差均为 0。 在此基础上,可以得到以下定理。 定理一: 路径的起点选择 定理陈述: 如果一个有向多重图存在一条起点和终点不同的欧拉路径,那么起点必定是唯一一个满足下式的顶点 s: $out\_deg(s)-in\_deg(s)=1$ 证明: 设存在一条欧拉路径 P,其起点为 s,终点为 t,且 $s\ne t$。 由于欧拉路径需要经过图中的每一条边且每条边恰好一次,因此,对于任意既不是起点也不是终点的中间顶点 v,每次进入该顶点后都必须离开该顶点。于是,该顶点的入度与出度相等: $out\_deg(v)=in\_deg(v)$ 对于起点 s,路径从该顶点出发,但最终不会返回该顶点。因此,路径经过起点时,使用的出边比入边多一条,即: $out\_deg(s)=in\_deg(s)+1$ 从而得到: $\Delta(s)=1$ 同理,对于终点 t,路径最终进入该顶点并结束,因此使用的入边比出边多一条,即: $in\_deg(t)=out\_deg(t)+1$ 从而得到: $\Delta(t)=-1$ 综上,欧拉路径的起点是唯一一个满足 $\Delta(v)=1$ 的顶点,终点是唯一一个满足 $\Delta(v)=-1$ 的顶点,其余顶点的度数差均为 0。 因此,如果图中存在满足 $\Delta(v)=1$ 的顶点,那么在欧拉路径存在的前提下,该顶点必定是路径的起点,且起点唯一。 定理二:无解的度数条件 定理陈述: 如果一个有向多重图存在欧拉路径,则至多有一个顶点满足 $\Delta(v)=1$,至多有一个顶点满足 $\Delta(v)=-1$。 此外,如果存在一个满足 $\Delta(v)=1$ 的顶点,那么必须恰好存在一个满足 $\Delta(v)=-1$ 的顶点。 因此,如果有两个或更多顶点的度数差为 1,或者其他顶点的度数配置不满足上述条件,则不存在合法的单词排列。 ...