有向图的字典表示。输入多行字符串,每行表示一个顶点和该顶点相连的边及长度,输出顶点数,边数,边的总长度。比如上图0点表示:
{'O':{'A':2,'B':5,'C':4}}。用eval函数处理输入,eval函数具体用法见第六章内置函数。
输入格式:
第一行表示输入的行数
下面每行输入表示一个顶点和该顶点相连的边及长度的字符串
输出格式:
在一行中输出顶点数,边数,边的总长度
输入样例:
在这里给出一组输入。例如:
4
{'a':{'b':10,'c':6}}
{'b':{'c':2,'d':7}}
{'c':{'d':10}}
{'d':{}}
输出样例:
在这里给出相应的输出。例如:
4 5 35
#普通切割
#顶点数
Row = int(input())
#边数
char = 0
#边的和
dights = 0
str = ''
list = []
#第一层
for x in range(1,Row+1):
line = input()
start,edges = line[2:-2].split("':{")
#第二层判断
if edges == '':
continue
else:
for y in edges:
if 'a' <= y <= 'z':
char += 1
if '0' <= y <= '9' or y == ',':
str += y
if x != Row:
str += ','
list = str[:-1].split(',')
for z in list:
dights += int(z)
print(f'{Row} {char} {dights}')
#eval()处理josn数据
Row = int(input())
Dic = {}
dights = 0
char = 0
for x in range(1,Row+1):
Dic.update(eval(input()))
for Key in Dic:
for key in Dic[Key]:
char += 1
dights += int(Dic[Key][key])
print(f'{Row} {char} {dights}')
以上代码全为本人亲自手敲,可能有一些错误和不足之处,如有更好的方法和建议,欢迎您在评论区友善讨论。