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...