public static void Dfs <T>(this BidirectionalGraph <T, Edge <T> > graph, T start, Action <Edge <T> > foundEdge) { var dfs = new DepthFirstSearchAlgorithm <T, Edge <T> >(graph); dfs.StartVertex += v => { if (!v.Equals(start)) { dfs.Abort(); } }; dfs.ExamineEdge += e => foundEdge(e); dfs.Compute(start); }