Lines Matching refs:Edge
85 Edges = std::vector<std::vector<Edge>>(NodeCount, std::vector<Edge>()); in initialize()
88 std::vector<std::vector<Edge *>>(NodeCount, std::vector<Edge *>()); in initialize()
101 for (auto &Edge : Edges[Src]) { in run() local
102 if (Edge.Flow > 0) { in run()
103 TotalCost += Edge.Cost * Edge.Flow; in run()
105 TotalFlow += Edge.Flow; in run()
124 Edge SrcEdge; in addEdge()
131 Edge DstEdge; in addEdge()
151 for (auto &Edge : Edges[Src]) { in getFlow() local
152 if (Edge.Flow > 0) in getFlow()
153 Flow.push_back(std::make_pair(Edge.Dst, Edge.Flow)); in getFlow()
161 for (auto &Edge : Edges[Src]) { in getFlow() local
162 if (Edge.Dst == Dst) { in getFlow()
163 Flow += Edge.Flow; in getFlow()
213 auto &Edge = Edges[Pred][Nodes[Now].ParentEdgeIndex]; in computeAugmentingPathCapacity() local
215 assert(Edge.Capacity >= Edge.Flow && "incorrect edge flow"); in computeAugmentingPathCapacity()
216 uint64_t EdgeCapacity = uint64_t(Edge.Capacity - Edge.Flow); in computeAugmentingPathCapacity()
263 auto &Edge = Edges[Src][EdgeIdx]; in findAugmentingPath() local
264 if (Edge.Flow < Edge.Capacity) { in findAugmentingPath()
265 uint64_t Dst = Edge.Dst; in findAugmentingPath()
266 int64_t NewDistance = Nodes[Src].Distance + Edge.Cost; in findAugmentingPath()
291 auto &Edge = Edges[Pred][Nodes[Now].ParentEdgeIndex]; in augmentFlowAlongPath() local
292 auto &RevEdge = Edges[Now][Edge.RevEdgeIndex]; in augmentFlowAlongPath()
294 Edge.Flow += PathCapacity; in augmentFlowAlongPath()
339 auto &Edge = Edges[NodeIdx][EdgeIdx]; in findAugmentingDAG() local
340 auto &Dst = Nodes[Edge.Dst]; in findAugmentingDAG()
343 if (Edge.OnShortestPath) { in findAugmentingDAG()
347 Stack.emplace(Edge.Dst, 0); in findAugmentingDAG()
379 for (auto &Edge : Edges[Src]) { in findAugmentingDAG() local
380 uint64_t Dst = Edge.Dst; in findAugmentingDAG()
381 if (Edge.OnShortestPath && Nodes[Src].Taken && Nodes[Dst].Taken && in findAugmentingDAG()
383 AugmentingEdges[Src].push_back(&Edge); in findAugmentingDAG()
402 for (auto &Edge : AugmentingEdges[Src]) { in augmentFlowAlongDAG() local
403 Edge->AugmentedFlow = 0; in augmentFlowAlongDAG()
415 for (auto &Edge : AugmentingEdges[Src]) { in augmentFlowAlongDAG() local
417 Nodes[Edge->Dst].FracFlow += EdgeFlow; in augmentFlowAlongDAG()
418 if (Edge->Capacity == INF) in augmentFlowAlongDAG()
420 uint64_t MaxIntFlow = double(Edge->Capacity - Edge->Flow) / EdgeFlow; in augmentFlowAlongDAG()
438 for (auto &Edge : AugmentingEdges[Src]) { in augmentFlowAlongDAG() local
439 uint64_t Dst = Edge->Dst; in augmentFlowAlongDAG()
441 EdgeFlow = std::min(EdgeFlow, uint64_t(Edge->Capacity - Edge->Flow)); in augmentFlowAlongDAG()
444 Edge->AugmentedFlow += EdgeFlow; in augmentFlowAlongDAG()
457 for (auto &Edge : AugmentingEdges[Src]) { in augmentFlowAlongDAG() local
458 uint64_t Dst = Edge->Dst; in augmentFlowAlongDAG()
461 uint64_t EdgeFlow = std::min(Nodes[Dst].IntFlow, Edge->AugmentedFlow); in augmentFlowAlongDAG()
464 Edge->AugmentedFlow -= EdgeFlow; in augmentFlowAlongDAG()
473 for (auto &Edge : AugmentingEdges[Src]) { in augmentFlowAlongDAG() local
474 assert(uint64_t(Edge->Capacity - Edge->Flow) >= Edge->AugmentedFlow); in augmentFlowAlongDAG()
476 auto &RevEdge = Edges[Edge->Dst][Edge->RevEdgeIndex]; in augmentFlowAlongDAG()
477 Edge->Flow += Edge->AugmentedFlow; in augmentFlowAlongDAG()
478 RevEdge.Flow -= Edge->AugmentedFlow; in augmentFlowAlongDAG()
479 if (Edge->Capacity == Edge->Flow && Edge->AugmentedFlow > 0) in augmentFlowAlongDAG()
503 for (auto &Edge : Edges[Src]) { in identifyShortestEdges() local
504 uint64_t Dst = Edge.Dst; in identifyShortestEdges()
505 Edge.OnShortestPath = in identifyShortestEdges()
508 Nodes[Dst].Distance == Nodes[Src].Distance + Edge.Cost && in identifyShortestEdges()
509 Edge.Capacity > Edge.Flow && in identifyShortestEdges()
510 uint64_t(Edge.Capacity - Edge.Flow) >= MinCapacity; in identifyShortestEdges()
540 struct Edge { struct in __anon646eb3200111::MinCostMaxFlow
562 std::vector<std::vector<Edge>> Edges;
568 std::vector<std::vector<Edge *>> AugmentingEdges;