Thanks for that. Impressive. An alternative that might be better reflected in the documentation is to use FindShortestPath. ``` (* FindShortestPath returns a procedure *) With[{pathfunc=FindShortestPath[smallgraph, 1, All], (* Construct weight rules for the graph *) edgeweights =Thread[Rule[EdgeList[smallgraph], PropertyValue[smallgraph,EdgeWeight]]]}, (* For each vertex, recover the path and its length *) Map[With[{path=EdgeList[PathGraph[pathfunc[#], DirectedEdges->True]]}, {# , path, Plus@@path/.edgeweights}]&, VertexList[smallgraph]]] ``` Alternatively, just return the edges of the tree...