Lines Matching defs:Dst

133   void addEdge(uint64_t Src, uint64_t Dst, int64_t Capacity, int64_t Cost) {
135 assert(Src != Dst && "loop edge are not supported");
138 SrcEdge.Dst = Dst;
142 SrcEdge.RevEdgeIndex = Edges[Dst].size();
145 DstEdge.Dst = Src;
152 Edges[Dst].push_back(DstEdge);
156 void addEdge(uint64_t Src, uint64_t Dst, int64_t Cost) {
157 addEdge(Src, Dst, INF, Cost);
166 Flow.push_back(std::make_pair(Edge.Dst, Edge.Flow));
172 int64_t getFlow(uint64_t Src, uint64_t Dst) const {
175 if (Edge.Dst == Dst) {
273 uint64_t Dst = Edge.Dst;
275 if (Nodes[Dst].Distance > NewDistance) {
277 Nodes[Dst].Distance = NewDistance;
278 Nodes[Dst].ParentNode = Src;
279 Nodes[Dst].ParentEdgeIndex = EdgeIdx;
281 if (!Nodes[Dst].Taken) {
282 Queue.push(Dst);
283 Nodes[Dst].Taken = true;
311 /// edge out of a node, continue search at Edge.Dst endpoint if it has not
348 auto &Dst = Nodes[Edge.Dst];
352 // If we haven't seen Edge.Dst so far, continue DFS search there
353 if (Dst.Discovery == 0 && Dst.NumCalls < MaxDfsCalls) {
354 Dst.Discovery = ++Time;
355 Stack.emplace(Edge.Dst, 0);
356 Dst.NumCalls++;
357 } else if (Dst.Taken && Dst.Finish != 0) {
358 // Else, if Edge.Dst already have a path to Target, so that NodeIdx
388 uint64_t Dst = Edge.Dst;
389 if (Edge.OnShortestPath && Nodes[Src].Taken && Nodes[Dst].Taken &&
390 Nodes[Dst].Finish < Nodes[Src].Finish) {
425 Nodes[Edge->Dst].FracFlow += EdgeFlow;
447 uint64_t Dst = Edge->Dst;
450 Nodes[Dst].IntFlow += EdgeFlow;
466 uint64_t Dst = Edge->Dst;
467 if (Nodes[Dst].IntFlow == 0)
469 uint64_t EdgeFlow = std::min(Nodes[Dst].IntFlow, Edge->AugmentedFlow);
470 Nodes[Dst].IntFlow -= EdgeFlow;
484 auto &RevEdge = Edges[Edge->Dst][Edge->RevEdgeIndex];
512 uint64_t Dst = Edge.Dst;
514 Src != Target && Dst != Source &&
515 Nodes[Dst].Distance <= Nodes[Target].Distance &&
516 Nodes[Dst].Distance == Nodes[Src].Distance + Edge.Cost &&
559 uint64_t Dst;
560 /// The index of the reverse edge between Dst and the current node.
656 uint64_t Dst = Jump->Target;
657 if (Jump->Flow > 0 && !Visited[Dst]) {
658 Queue.push(Dst);
659 Visited[Dst] = true;
707 uint64_t Dst = Jump->Target;
709 if (Distance[Dst] > Distance[Src] + JumpDist) {
710 Queue.erase(std::make_pair(Distance[Dst], Dst));
712 Distance[Dst] = Distance[Src] + JumpDist;
713 Parent[Dst] = Jump;
715 Queue.insert(std::make_pair(Distance[Dst], Dst));
842 uint64_t Dst = Jump->Target;
843 // If Dst has been visited, skip Jump
844 if (Visited[Dst])
846 // Process block Dst
847 Visited[Dst] = true;
848 if (!Func.Blocks[Dst].HasUnknownWeight) {
849 KnownDstBlocks.push_back(&Func.Blocks[Dst]);
851 Queue.push(Dst);
852 UnknownBlocks.push_back(&Func.Blocks[Dst]);
960 uint64_t Dst = Jump->Target;
961 LocalInDegree[Dst]--;
962 if (LocalInDegree[Dst] == 0) {
963 Queue.push(Dst);
1302 for (uint64_t Dst : PositiveFlowEdges[Src]) {
1303 if (!Visited[Dst]) {
1304 Queue.push(Dst);
1305 Visited[Dst] = true;