<｜begin▁of▁sentence｜>### Instruction:
Imagine you're out in the field, examining a complex network of ancient riverbeds that you've mapped out as nodes and paths where sedimentary layers have been deposited. Each path between nodes has been assigned a 'difficulty value' that represents the energy required to travel that section due to varying terrain and sedimentary deposits. The network you've sketched out corresponds to an edge set with associated difficulty values: a link between Site 0 and Site 1 has a value of 10, Site 1 to Site 2 has a value of 1, and so forth, continuing with (2, 3, 1), (3, 4, 1), and finally (4, 0, 1) completing the loop.

You're now tasked with analyzing this network to find the minimum energy pathways to traverse the ancient river systems from your two base camps located at Sites 0 and 4. By employing the 'multi_source_dijkstra' method, your challenge is to unearth the lowest difficulty paths radiating from these base camps to all other sites within the network. This will enable the most efficient expedition planning while conserving the energy of your field team as they navigate the terrain.
### Response:
import networkx as nx

# Create a weighted graph
G = nx.Graph()
G.add_weighted_edges_from([(0, 1, 10), (1, 2, 1), (2, 3, 1), (3, 4, 1), (4, 0, 1)])

# Define multiple source nodes
sources = {0, 4}

# Run multi-source dijkstra algorithm
length, path = nx.multi_source_dijkstra(G, sources)

# Print the shortest path from any of the sources to all other nodes
for node in G:
  print(f"{node}: {length[node]} with path {path[node]}")
<|EOT|>
