QAQ尽快求解以下问题如图中第五题的程序要求,文件夹压缩包的形式发我,最好于5月26号下午16:00点前发我

#数据结构与算法
设有n(n>10)个城市之间的交通图。假设任意两个城市之间不一定有直接交通线路,权
表示乘车时间。要求事先将交通图信息将存入磁盘文件中,求从某城市出发到其他城市的最少
乘车时间和乘车路线。要求将结果以图形方式在屏幕上输出。
关键是要以图形方式在屏幕上输出QAQ

img

运行结果:
首界面:

img


查询任意两点间的所有路线(城市或者站点从0开始编号,输入为站点编号):

img

查询任意两点间距离最短的路线(你的题目中把距离当作时间就可以了)

img

数据文件为graph.txt

压缩包地址:

链接: https://pan.baidu.com/s/1GKmvLU0vt20GuYJwCwwUdQ 提取码: mgfq

import matplotlib.pyplot as plt
import networkx
 
G2 = networkx.Graph()  # 创建:空的 无向图
#创建加权边,a、b、c等代表城市,后边的值代表乘车时间
edges = [("a", "b", 5), ("a", "c",13), ("a", "e",10),("a", "g", 6), 
        ("a", "i", 5),("a", "k", 6),("a", "l", 2), ("a", "m", 5),
        ("b", "c", 3), ("b", "i", 1),("c", "d", 9), ("d", "e",11),
        ("e", "f", 9), ("f", "g", 6),("g", "h", 7), ("h", "i", 4),
        ("i", "j", 9), ("j", "k", 6),("k", "l", 7), ("l", "m", 4)]
G2.add_weighted_edges_from(edges)  # 向图中添加多条赋权边: (node1,node2,weight)
#指定要求解的两个点
source = 'b'
target = 'f'
# 两个指定顶点之间的最短加权路径
minWPath= networkx.dijkstra_path(G2, source=source, target=target)
print(f"顶点 {source} 到 顶点 {target} 的最短加权路径: {minWPath}")
# 两个指定顶点之间的最短加权路径的长度
lMinWPath = networkx.dijkstra_path_length(G2, source=source, target=target)  #最短加权路径长度
print(f"顶点 {source} 到 顶点 {target} 的最短加权路径长度: {lMinWPath}")
 
pos = networkx.spring_layout(G2)  # 用 FR算法排列节点
networkx.draw(G2, pos, with_labels=True, alpha=0.5) #画所有节点
labels = networkx.get_edge_attributes(G2,'weight') #取加权值为标签
networkx.draw_networkx_edge_labels(G2, pos, edge_labels = labels) #画边和标签
posCopy = pos.copy()  #复制所有节点
edgesCopy = [] #最小路径加权边
#遍历所有节点,保留最小路径相关节点
for k in pos.keys():
    if k not in minWPath:
        posCopy.pop(k)
#遍历所有加权边,取出最小路径相关加权边
for i in range(len(minWPath)-1):
    for edge in edges:
        if minWPath[i] in edge and  minWPath[i+1] in edge:
            edgesCopy.append(edge)
            break
minG2 = networkx.Graph() #创建空无向图
minG2.add_weighted_edges_from(edgesCopy) #向图中添加最小路径加权边
networkx.draw(minG2, posCopy, with_labels=False, alpha=1, edge_color='red')  #用红色标记最小路径边
plt.show()