40 lines
959 B
Python
40 lines
959 B
Python
|
import sys
|
||
|
from collections import OrderedDict
|
||
|
|
||
|
class Trie:
|
||
|
def __init__(self, name):
|
||
|
self.name = name
|
||
|
self.children = OrderedDict()
|
||
|
self.count = 1
|
||
|
|
||
|
def add(self, name):
|
||
|
if name in self.children:
|
||
|
self.children[name].count += 1
|
||
|
else:
|
||
|
self.children[name] = Trie(name)
|
||
|
return self.children[name]
|
||
|
|
||
|
def print(self, depth):
|
||
|
if depth > 0:
|
||
|
print('|', end="")
|
||
|
for i in range(depth):
|
||
|
print('-', end="")
|
||
|
if depth > 0:
|
||
|
print(end=" ")
|
||
|
print(self.name, '#', self.count)
|
||
|
for key, child in self.children.items():
|
||
|
child.print(depth + 1)
|
||
|
|
||
|
|
||
|
Root = Trie("Root")
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
for line in sys.stdin:
|
||
|
words = line.split('==>')
|
||
|
words = [word.strip() for word in words]
|
||
|
MyTrie = Root;
|
||
|
for word in words:
|
||
|
MyTrie = MyTrie.add(word)
|
||
|
|
||
|
Root.print(0)
|