Lines Matching refs:Edge
96 Edges = std::vector<std::vector<Edge>>(NodeCount, std::vector<Edge>()); in initialize()
99 std::vector<std::vector<Edge *>>(NodeCount, std::vector<Edge *>()); in initialize()
114 for (auto &Edge : Edges[Src]) { in run() local
115 if (Edge.Flow > 0) { in run()
116 TotalCost += Edge.Cost * Edge.Flow; in run()
118 TotalFlow += Edge.Flow; in run()
137 Edge SrcEdge; in addEdge()
144 Edge DstEdge; in addEdge()
164 for (const auto &Edge : Edges[Src]) { in getFlow() local
165 if (Edge.Flow > 0) in getFlow()
166 Flow.push_back(std::make_pair(Edge.Dst, Edge.Flow)); in getFlow()
174 for (const auto &Edge : Edges[Src]) { in getFlow() local
175 if (Edge.Dst == Dst) { in getFlow()
176 Flow += Edge.Flow; in getFlow()
221 auto &Edge = Edges[Pred][Nodes[Now].ParentEdgeIndex]; in computeAugmentingPathCapacity() local
223 assert(Edge.Capacity >= Edge.Flow && "incorrect edge flow"); in computeAugmentingPathCapacity()
224 uint64_t EdgeCapacity = uint64_t(Edge.Capacity - Edge.Flow); in computeAugmentingPathCapacity()
271 auto &Edge = Edges[Src][EdgeIdx]; in findAugmentingPath() local
272 if (Edge.Flow < Edge.Capacity) { in findAugmentingPath()
273 uint64_t Dst = Edge.Dst; in findAugmentingPath()
274 int64_t NewDistance = Nodes[Src].Distance + Edge.Cost; in findAugmentingPath()
299 auto &Edge = Edges[Pred][Nodes[Now].ParentEdgeIndex]; in augmentFlowAlongPath() local
300 auto &RevEdge = Edges[Now][Edge.RevEdgeIndex]; in augmentFlowAlongPath()
302 Edge.Flow += PathCapacity; in augmentFlowAlongPath()
347 auto &Edge = Edges[NodeIdx][EdgeIdx]; in findAugmentingDAG() local
348 auto &Dst = Nodes[Edge.Dst]; in findAugmentingDAG()
351 if (Edge.OnShortestPath) { in findAugmentingDAG()
355 Stack.emplace(Edge.Dst, 0); in findAugmentingDAG()
387 for (auto &Edge : Edges[Src]) { in findAugmentingDAG() local
388 uint64_t Dst = Edge.Dst; in findAugmentingDAG()
389 if (Edge.OnShortestPath && Nodes[Src].Taken && Nodes[Dst].Taken && in findAugmentingDAG()
391 AugmentingEdges[Src].push_back(&Edge); in findAugmentingDAG()
410 for (auto &Edge : AugmentingEdges[Src]) { in augmentFlowAlongDAG() local
411 Edge->AugmentedFlow = 0; in augmentFlowAlongDAG()
423 for (auto &Edge : AugmentingEdges[Src]) { in augmentFlowAlongDAG() local
425 Nodes[Edge->Dst].FracFlow += EdgeFlow; in augmentFlowAlongDAG()
426 if (Edge->Capacity == INF) in augmentFlowAlongDAG()
428 uint64_t MaxIntFlow = double(Edge->Capacity - Edge->Flow) / EdgeFlow; in augmentFlowAlongDAG()
446 for (auto &Edge : AugmentingEdges[Src]) { in augmentFlowAlongDAG() local
447 uint64_t Dst = Edge->Dst; in augmentFlowAlongDAG()
449 EdgeFlow = std::min(EdgeFlow, uint64_t(Edge->Capacity - Edge->Flow)); in augmentFlowAlongDAG()
452 Edge->AugmentedFlow += EdgeFlow; in augmentFlowAlongDAG()
465 for (auto &Edge : AugmentingEdges[Src]) { in augmentFlowAlongDAG() local
466 uint64_t Dst = Edge->Dst; in augmentFlowAlongDAG()
469 uint64_t EdgeFlow = std::min(Nodes[Dst].IntFlow, Edge->AugmentedFlow); in augmentFlowAlongDAG()
472 Edge->AugmentedFlow -= EdgeFlow; in augmentFlowAlongDAG()
481 for (auto &Edge : AugmentingEdges[Src]) { in augmentFlowAlongDAG() local
482 assert(uint64_t(Edge->Capacity - Edge->Flow) >= Edge->AugmentedFlow); in augmentFlowAlongDAG()
484 auto &RevEdge = Edges[Edge->Dst][Edge->RevEdgeIndex]; in augmentFlowAlongDAG()
485 Edge->Flow += Edge->AugmentedFlow; in augmentFlowAlongDAG()
486 RevEdge.Flow -= Edge->AugmentedFlow; in augmentFlowAlongDAG()
487 if (Edge->Capacity == Edge->Flow && Edge->AugmentedFlow > 0) in augmentFlowAlongDAG()
511 for (auto &Edge : Edges[Src]) { in identifyShortestEdges() local
512 uint64_t Dst = Edge.Dst; in identifyShortestEdges()
513 Edge.OnShortestPath = in identifyShortestEdges()
516 Nodes[Dst].Distance == Nodes[Src].Distance + Edge.Cost && in identifyShortestEdges()
517 Edge.Capacity > Edge.Flow && in identifyShortestEdges()
518 uint64_t(Edge.Capacity - Edge.Flow) >= MinCapacity; in identifyShortestEdges()
551 struct Edge { struct in __anon5aecd1f00111::MinCostMaxFlow
573 std::vector<std::vector<Edge>> Edges;
579 std::vector<std::vector<Edge *>> AugmentingEdges;