Cheapest Flights Within K Stops LeetCode solution in C++
1class Solution {2public:3#define f first4#define s second5int findCheapestPrice(int n, vector<vector<int>> &flights, int src, int dst, int k) {6priority_queue<array<int, 3>, vector<array<int, 3>>, greater<array<int, 3>>> pq;7unordered_map<int, vector<pair<int, int>>> g;89for (auto &f : flights) {10g[f[0]].push_back({f[1], f[2]});11}12vector<int> dis(n, INT_MAX);13pq.push({0, src, 0});14while (!pq.empty()) {15int c = pq.top()[0];16int cur = pq.top()[1];17int lvl = pq.top()[2];18pq.pop();19if (cur == dst) return c;20if (lvl > k || lvl >= dis[cur]) continue;21dis[cur] = lvl;22for (auto &nei : g[cur]) {23pq.push({c + nei.s, nei.f, lvl + 1});24}25}26return -1;27}28};