Lines Matching refs:Src

113     for (uint64_t Src = 0; Src < Nodes.size(); Src++) {  in run()  local
114 for (auto &Edge : Edges[Src]) { in run()
117 if (Src == Source) in run()
133 void addEdge(uint64_t Src, uint64_t Dst, int64_t Capacity, int64_t Cost) { in addEdge() argument
135 assert(Src != Dst && "loop edge are not supported"); in addEdge()
145 DstEdge.Dst = Src; in addEdge()
149 DstEdge.RevEdgeIndex = Edges[Src].size(); in addEdge()
151 Edges[Src].push_back(SrcEdge); in addEdge()
156 void addEdge(uint64_t Src, uint64_t Dst, int64_t Cost) { in addEdge() argument
157 addEdge(Src, Dst, INF, Cost); in addEdge()
162 std::vector<std::pair<uint64_t, int64_t>> getFlow(uint64_t Src) const { in getFlow()
164 for (const auto &Edge : Edges[Src]) { in getFlow()
172 int64_t getFlow(uint64_t Src, uint64_t Dst) const { in getFlow() argument
174 for (const auto &Edge : Edges[Src]) { in getFlow()
247 uint64_t Src = Queue.front(); in findAugmentingPath() local
249 Nodes[Src].Taken = false; in findAugmentingPath()
266 if (Nodes[Src].Distance > Nodes[Target].Distance) in findAugmentingPath()
270 for (uint64_t EdgeIdx = 0; EdgeIdx < Edges[Src].size(); EdgeIdx++) { in findAugmentingPath()
271 auto &Edge = Edges[Src][EdgeIdx]; in findAugmentingPath()
274 int64_t NewDistance = Nodes[Src].Distance + Edge.Cost; in findAugmentingPath()
278 Nodes[Dst].ParentNode = Src; in findAugmentingPath()
385 for (size_t Src : AugmentingOrder) { in findAugmentingDAG() local
386 AugmentingEdges[Src].clear(); in findAugmentingDAG()
387 for (auto &Edge : Edges[Src]) { in findAugmentingDAG()
389 if (Edge.OnShortestPath && Nodes[Src].Taken && Nodes[Dst].Taken && in findAugmentingDAG()
390 Nodes[Dst].Finish < Nodes[Src].Finish) { in findAugmentingDAG()
391 AugmentingEdges[Src].push_back(&Edge); in findAugmentingDAG()
394 assert((Src == Target || !AugmentingEdges[Src].empty()) && in findAugmentingDAG()
407 for (uint64_t Src : AugmentingOrder) { in augmentFlowAlongDAG() local
408 Nodes[Src].FracFlow = 0; in augmentFlowAlongDAG()
409 Nodes[Src].IntFlow = 0; in augmentFlowAlongDAG()
410 for (auto &Edge : AugmentingEdges[Src]) { in augmentFlowAlongDAG()
418 for (uint64_t Src : AugmentingOrder) { in augmentFlowAlongDAG() local
419 assert((Src == Target || Nodes[Src].FracFlow > 0.0) && in augmentFlowAlongDAG()
422 uint64_t Degree = AugmentingEdges[Src].size(); in augmentFlowAlongDAG()
423 for (auto &Edge : AugmentingEdges[Src]) { in augmentFlowAlongDAG()
424 double EdgeFlow = Nodes[Src].FracFlow / Degree; in augmentFlowAlongDAG()
438 for (uint64_t Src : AugmentingOrder) { in augmentFlowAlongDAG() local
439 if (Src == Target) in augmentFlowAlongDAG()
443 uint64_t Degree = AugmentingEdges[Src].size(); in augmentFlowAlongDAG()
445 uint64_t SuccFlow = (Nodes[Src].IntFlow + Degree - 1) / Degree; in augmentFlowAlongDAG()
446 for (auto &Edge : AugmentingEdges[Src]) { in augmentFlowAlongDAG()
448 uint64_t EdgeFlow = std::min(Nodes[Src].IntFlow, SuccFlow); in augmentFlowAlongDAG()
451 Nodes[Src].IntFlow -= EdgeFlow; in augmentFlowAlongDAG()
462 uint64_t Src = AugmentingOrder[Idx - 1]; in augmentFlowAlongDAG() local
465 for (auto &Edge : AugmentingEdges[Src]) { in augmentFlowAlongDAG()
471 Nodes[Src].IntFlow += EdgeFlow; in augmentFlowAlongDAG()
478 for (uint64_t Src : AugmentingOrder) { in augmentFlowAlongDAG() local
480 assert(Src == Source || Nodes[Src].IntFlow == 0); in augmentFlowAlongDAG()
481 for (auto &Edge : AugmentingEdges[Src]) { in augmentFlowAlongDAG()
506 for (size_t Src = 0; Src < Nodes.size(); Src++) { in identifyShortestEdges() local
508 if (Nodes[Src].Distance > Nodes[Target].Distance) in identifyShortestEdges()
511 for (auto &Edge : Edges[Src]) { in identifyShortestEdges()
514 Src != Target && Dst != Source && in identifyShortestEdges()
516 Nodes[Dst].Distance == Nodes[Src].Distance + Edge.Cost && in identifyShortestEdges()
646 void findReachable(uint64_t Src, BitVector &Visited) { in findReachable() argument
647 if (Visited[Src]) in findReachable()
650 Queue.push(Src); in findReachable()
651 Visited[Src] = true; in findReachable()
653 Src = Queue.front(); in findReachable()
655 for (auto *Jump : Func.Blocks[Src].SuccJumps) { in findReachable()
699 uint64_t Src = Queue.begin()->second; in findShortestPath() local
702 if (Src == Target || in findShortestPath()
703 (Func.Blocks[Src].isExit() && Target == AnyExitBlock)) in findShortestPath()
706 for (auto *Jump : Func.Blocks[Src].SuccJumps) { in findShortestPath()
709 if (Distance[Dst] > Distance[Src] + JumpDist) { in findShortestPath()
712 Distance[Dst] = Distance[Src] + JumpDist; in findShortestPath()
1300 uint64_t Src = Queue.front(); in verifyOutput() local
1302 for (uint64_t Dst : PositiveFlowEdges[Src]) { in verifyOutput()