Submission #873865

#TimeUsernameProblemLanguageResultExecution timeMemory
873865MinaRagy06Tourism (JOI23_tourism)C++17
28 / 100
5072 ms18412 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long const int N = 100'005; vector<int> adj[N]; int h[N], st[N], en[N], t, anc[17][N]; void dfs(int i, int p, int d) { anc[0][i] = p; for (int j = 1; j < 17; j++) { anc[j][i] = anc[j - 1][anc[j - 1][i]]; } h[i] = d; st[i] = t++; for (auto nxt : adj[i]) { if (nxt == p) continue; dfs(nxt, i, d + 1); } en[i] = t - 1; } int lca(int u, int v) { if (st[u] > st[v]) swap(u, v); if (st[u] <= st[v] && en[v] <= en[u]) { return u; } for (int j = 16; j >= 0; j--) { if (!(st[anc[j][u]] <= st[v] && en[v] <= en[anc[j][u]])) { u = anc[j][u]; } } return anc[0][u]; } int main() { ios_base::sync_with_stdio(0), cin.tie(0); int n, m, q; cin >> n >> m >> q; for (int i = 1, u, v; i < n; i++) { cin >> u >> v; adj[u].push_back(v); adj[v].push_back(u); } dfs(1, 1, 1); int a[m]; for (int i = 0; i < m; i++) { cin >> a[i]; } while (q--) { int l, r; cin >> l >> r; l--, r--; vector<int> cur; for (int i = l; i <= r; i++) { cur.push_back(a[i]); } sort(cur.begin(), cur.end(), [&] (int x, int y) {return st[x] < st[y];}); int ans = h[cur[0]] - h[lca(cur[0], cur.back())] + 1; for (int i = 1; i < cur.size(); i++) { ans += h[cur[i]] - h[lca(cur[i], cur[i - 1])]; } cout << ans << '\n'; } return 0; }

Compilation message (stderr)

tourism.cpp: In function 'int main()':
tourism.cpp:57:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   57 |   for (int i = 1; i < cur.size(); i++) {
      |                   ~~^~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...