Submission #1135950

#TimeUsernameProblemLanguageResultExecution timeMemory
1135950byunjaewooBitaro’s Party (JOI18_bitaro)C++20
100 / 100
732 ms262304 KiB
#include <bits/stdc++.h> #define int long long using namespace std; const int N=100010, sqrtN=80, INF=1e18; int n, m, q, d[N], mx[N]; bool chk[N]; vector<pair<int, int>> v[N]; vector<int> adj[N]; signed main() { scanf("%lld%lld%lld", &n, &m, &q); for(int i=1; i<=m; i++) { int u, v; scanf("%lld%lld", &u, &v); adj[v].push_back(u); } for(int i=1; i<=n; i++) { for(int j:adj[i]) { vector<pair<int, int>> tmp; for(int p=0, q=0, k=0; k<sqrtN && (p<v[i].size() || q<v[j].size()); k++) { if(p==v[i].size() || (q<v[j].size() && v[i][p].first<v[j][q].first+1)) { if(chk[v[j][q].second]) { q++, k--; continue; } chk[v[j][q].second]=true, tmp.push_back({v[j][q].first+1, v[j][q].second}); q++; } else { if(chk[v[i][p].second]) { p++, k--; continue; } chk[v[i][p].second]=true, tmp.push_back({v[i][p].first, v[i][p].second}); p++; } } v[i]=tmp; for(auto i:tmp) chk[i.second]=false; } v[i].push_back({0, i}); } while(q--) { int x, y; cin>>x>>y; vector<int> tv; for(int i=1; i<=y; i++) { int t; cin>>t; if(t<=x) tv.push_back(t), chk[t]=true; } y=tv.size(); if(y>=sqrtN) { fill(d+1, d+x+1, -INF); for(int i=1; i<=x; i++) { if(!chk[i]) d[i]=0; for(int j:adj[i]) d[i]=max(d[i], d[j]+1); } printf("%lld\n", max(-1ll, d[x])); } else { int ans=-1; for(int i=0; i<v[x].size(); i++) { if(chk[v[x][i].second]) continue; ans=v[x][i].first; break; } printf("%lld\n", ans); } for(int i:tv) chk[i]=false; } return 0; }

Compilation message (stderr)

bitaro.cpp: In function 'int main()':
bitaro.cpp:12:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   12 |     scanf("%lld%lld%lld", &n, &m, &q);
      |     ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
bitaro.cpp:14:24: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   14 |         int u, v; scanf("%lld%lld", &u, &v);
      |                   ~~~~~^~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...