import networkx as nx
oo = float('inf')
# 创建无向图
G = nx.Graph()
G.add_node(1) # 添加节点1
G.add_edge(2,3) # 添加节点2,3并链接23节点
print(G.nodes, G.edges, G.number_of_nodes(), G.number_of_edges())
# 创建有向图
G = nx.DiGraph()
G.add_edge(2, 3)
G.add_edge(3, 2)
G.to_undirected() # 转换成无向图
print(G.edges)
# 加权图
G = nx.DiGraph()
G.add_weighted_edges_from([(0,1,3.0), (1,2,7.5)]) # 给01边加权3, 12边加权7.5
print(G.get_edge_data(1,2)) # 获得12边的属性
G.add_weighted_edges_from([(2,3,5)], weight='color')
print(G.edges.data())
G.node[1]['size'] = 10
print(G.nodes.data())
import matplotlib.pyplot as plt
g_data = [(1, 2, 6), (1, 3, 1), (1, 4, 5),
(2, 3, 5), (2, 5, 3),
(3, 4, 5), (3, 5, 6), (3, 6, 4), (4, 6, 2),
(5, 6, 6)]
# 最小生成树
g = nx.Graph()
g.add_weighted_edges_from(g_data)
tree = nx.minimum_spanning_tree(g, algorithm='prim')
print(tree.edges(data=True))
# 最短路径
G = nx.path_graph(5) # 0-1-2-3-4链
print(nx.dijkstra_path(G, 0, 4))
# 所有节点之间的最短路径
G = nx.Graph()
G.add_weighted_edges_from(g_da