public static int CountEdgeDisjointPaths1 <T>(this IGraphEdges <T> graph, T startVertex, T to) { if (Eq(startVertex, to)) { return(1); } var pathEdges = graph.EdgeDisjointPaths1(startVertex, to); return(pathEdges.Where(edge => Eq(edge.Item1, startVertex)).Count()); }
public static List <List <T> > FindEdgeDisjointPaths1 <T>(this IGraphEdges <T> graph, T startVertex, T to) { if (Eq(to, startVertex)) { var paths = new List <List <T> >(); paths.Add(new List <T>()); paths[0].Add(startVertex); return(paths); } HashSet <Tuple <T, T> > pathEdges = graph.EdgeDisjointPaths1(startVertex, to); return(ConvertEdgesToPaths(pathEdges, startVertex, to)); }