有向图的字典表示。输入多行字符串,每行表示一个顶点和该顶点相连的边及长度,输出顶点数,边数,边的总长度。比如上图0点表示: {'O':{'A':2,'B':5,'C':4}}。用eval函数处理输入,eval函数具体用法见第六章内置函数。
时间: 2024-02-15 21:03:25 浏览: 105
DS.rar_ trie_TRIE_site:www.pudn.com_二叉树 注释_图 数据结构
好的,我来为您解答这个问题。
可以先将输入的字符串转化为字典形式,然后对字典进行遍历求解。
以下是代码实现:
```python
input_str = input() # 输入多行字符串,可以使用input()函数逐行输入
graph_dict = {}
while input_str:
vertex, edges = input_str.split(':', 1) # 将输入字符串按冒号分割成顶点和边
edges = eval(edges) # 将边的字符串形式转化为字典形式
graph_dict[vertex] = edges # 将顶点和边添加到图的字典中
input_str = input()
# 遍历字典,统计顶点数、边数和边的总长度
vertex_count = len(graph_dict)
edge_count = 0
edge_length = 0
for edges in graph_dict.values():
edge_count += len(edges)
edge_length += sum(edges.values())
print("顶点数:", vertex_count)
print("边数:", edge_count)
print("边的总长度:", edge_length)
```
注意,使用eval函数需要保证输入的字符串格式正确,否则可能会出现错误。为了避免输入格式错误导致程序异常,可以使用try-except语句捕获eval函数可能抛出的异常。
阅读全文