leetcodeSolution to some Leetcode problems written in C++ |
git clone git://git.dimitrijedobrota.com/leetcode.git |
Log | Files | Refs | README | LICENSE |
3243.cpp (911B)
0 class Solution {
1 public:
2 vector<int> shortestDistanceAfterQueries(int n, const vector<vector<int>> &queries) const {
3 vector<vector<int>> adj(n);
4 static int len[501];
6 len[n - 1] = 0;
7 for (int i = 1; i < n; i++) {
8 adj[i].push_back(i - 1);
9 len[i - 1] = n - i;
10 }
12 vector<int> res;
13 queue<pair<int, int>> q;
14 for (const auto query : queries) {
15 for (q.emplace(query[0], len[query[1]]); !q.empty();) {
16 const auto [crnt, parent] = q.front();
17 q.pop();
19 if (len[crnt] <= parent + 1) continue;
21 len[crnt] = parent + 1;
22 for (const int next : adj[crnt])
23 q.emplace(next, len[crnt]);
24 }
26 adj[query[1]].push_back(query[0]);
27 res.push_back(len[0]);
28 }
30 return res;
31 }
32 };