Each line in the textual representation of the tree will contain exactly one name.
The first line will contain the CEO's name, starting in column 1.
The entire tree, or any sub-tree, having the form
will be represented in textual form as:
The output resulting from each print command in the input will be terminated by one line consisting of exactly 60 hyphens. There will not be any blank lines in the output.
Sample Input
VonNeumann VonNeumann hires Tanenbaum VonNeumann hires Dijkstra Tanenbaum hires Stallings Tanenbaum hires Silberschatz Stallings hires Knuth Stallings hires Hamming Stallings hires Huffman print VonNeumann hires Shannon fire Tanenbaum print fire Silberschatz fire VonNeumann print
Sample Output
VonNeumann +Tanenbaum ++Stallings +++Knuth +++Hamming +++Huffman ++Silberschatz +Dijkstra ------------------------------------------------------------ VonNeumann +Stallings ++Knuth +++Hamming +++Huffman ++Silberschatz +Dijkstra +Shannon ------------------------------------------------------------ Stallings +Knuth ++Hamming +++Huffman +Dijkstra +Shannon ------------------------------------------------------------
Source
题目链接:http://poj.org/problem?id=2003
题目大意:看题面和输入输出很恐怖的样子,其实题意很简答,一棵树
A hires B 表示把B做为A的儿子
fire A 表示把A结点去掉,去掉以后其第一个儿子结点到它的位置,然后其第一个孙子结点到其第一个儿子结点出,以此类推。。。直到叶子
print 表示按先序遍历,遍历整棵树,+号个数表示当前点所在层的层数
题目分析:想到好的数据结构可以简化一大部分问题,像这种要对树上结点增删查的问题,我们采用多重链表来构树
多重链表结构体里有三个参数,点的名字,父指针,存储儿子指针的链表,还需要一个键值对存储作为子树根的结点对应的树指针,显然用map,具体操作看代码和注释吧
#include#include #include #include #include
?