public MaxFlow(Graph <TNodeId, TNodeData, TEdgeId, TEdgeData> graph, List <Edge <TEdgeData, TEdgeId, TNodeId> > edges) { Result = new MaxFlowResult <TNodeId, TNodeData, TEdgeId, TEdgeData>(); foreach (var edge in edges) { Result.EdgeToFlow[edge.Id] = 0; } this.graph = graph; level = new Dictionary <TNodeId, int>(); init(); }
private void ModifyResult(List <List <List <TEdgeId> > > edges, MaxFlowResult <TNodeId, TNodeData, TEdgeId, TEdgeData> result) { var edgeSet = new HashSet <Edge <TEdgeData, TEdgeId, TNodeId> >(); var nodeSet = new HashSet <Node <TNodeData, TNodeId> >(); foreach (var list in edges) { foreach (var item in list) { foreach (var edge in item) { var tempEdge = graph.EdgeIdToEdge[edge]; edgeSet.Add(tempEdge); nodeSet.Add(graph.NodeIdToNode[tempEdge.Source]); nodeSet.Add(graph.NodeIdToNode[tempEdge.Target]); } } } result.GraphContainer = new GraphContainer <TNodeId, TNodeData, TEdgeId, TEdgeData>(nodeSet.ToList(), edgeSet.ToList()); }