제출 #829284

#제출 시각아이디문제언어결과실행 시간메모리
829284HanksburgerTourism (JOI23_tourism)C++17
10 / 100
5040 ms18140 KiB
#include <bits/stdc++.h> using namespace std; int par[100005][20], depth[100005], tin[100005], val[100005], c[100005], n, m, q, t; vector<pair<int, int> > vec; vector<int> adj[100005]; void dfs(int u, int p) { par[u][0]=p; for (int i=1; i<20; i++) par[u][i]=par[par[u][i-1]][i-1]; tin[u]=(++t); for (int v:adj[u]) { if (v==p) continue; depth[v]=depth[u]+1; dfs(v, u); } } void dfs2(int u, int p) { for (int v:adj[u]) { if (v==p) continue; dfs2(v, u); val[u]+=val[v]; } } int lca(int u, int v) { if (depth[u]<depth[v]) swap(u, v); for (int i=19; i>=0; i--) if ((depth[u]-depth[v])&(1<<i)) u=par[u][i]; if (u==v) return u; for (int i=19; i>=0; i--) if (par[u][i]!=par[v][i]) u=par[u][i], v=par[v][i]; return par[u][0]; } int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n >> m >> q; for (int i=1; i<n; i++) { int u, v; cin >> u >> v; adj[u].push_back(v); adj[v].push_back(u); } dfs(1, 1); for (int i=1; i<=m; i++) cin >> c[i]; for (int i=1; i<=q; i++) { int l, r, ans=0; cin >> l >> r; if (l==r) { cout << 1 << '\n'; continue; } for (int j=1; j<=n; j++) val[j]=0; vec.clear(); for (int j=l; j<=r; j++) vec.push_back({tin[c[j]], c[j]}); sort(vec.begin(), vec.end()); for (int j=1; j<vec.size(); j++) { val[vec[j-1].second]++; val[vec[j].second]++; // cout << "val " << vec[j-1].second << " +1\n"; // cout << "val " << vec[j].second << " +1\n"; int LCA=lca(vec[j-1].second, vec[j].second); if (LCA!=1) { val[par[LCA][0]]-=2; // cout << "val " << par[LCA][0] << " -2\n"; } } dfs2(1, 1); for (int j=1; j<=n; j++) if (val[j]) ans++; cout << ans << '\n'; } }

컴파일 시 표준 에러 (stderr) 메시지

tourism.cpp: In function 'int main()':
tourism.cpp:75:24: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   75 |         for (int j=1; j<vec.size(); j++)
      |                       ~^~~~~~~~~~~
#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...