Submission #1293613

#TimeUsernameProblemLanguageResultExecution timeMemory
1293613nhmktuBitaro’s Party (JOI18_bitaro)C++17
0 / 100
3 ms5004 KiB
#include <bits/stdc++.h> #define ll long long #define FOR(i,a,b) for(int i=a;i<=b;i++) #define ROF(i,a,b) for(int i=a;i>=b;i--) #define pi pair<int,int> #define pii pair<int,pi> #define fi first #define se second #define pb push_back #define all(x) x.begin(), x.end() #define sz(a) (int) a.size() #define endl '\n' #define data "JOI18_bitaro" using namespace std; const ll linf = 1e18; const int inf = 1e9; const int MOD = 1e9 + 7, N = 1e5; const int BLOCK = 320; void add(int &a, int b) { a += b; if(a>=MOD) a-=MOD; if(a<0) a += MOD; } int modulo(int x) { if(x<=1) return 1; return (MOD - MOD/x) * modulo(MOD/x) % MOD; } int mul(int a, int b) { return (1ll *a%MOD * b%MOD) % MOD; } int n, m, q; vector<int> adj[N+3]; vector< pi > dist[N+3]; void inp(void) { cin >> n >> m >> q; FOR(i, 1, m) { int u, v; cin >> u >> v; adj[v].pb(u); } } void solve(void) { FOR(u, 1, n) { dist[u].pb({0, u}); vector<int> pre(n+3, -1); vector<int> qu; FOR(i, 0, sz(adj[u]) -1) { int v = adj[u][i]; FOR(j, 0, sz(dist[v]) -1) { int dv = dist[v][j].fi; int idx = dist[v][j].se; if(pre[idx] == -1) { qu.pb(idx); pre[idx] = dv + 1; } else pre[idx] = max(pre[idx], dv + 1); } } FOR(i, 0, sz(qu) - 1) { int idx = qu[i]; dist[u].pb({pre[idx], idx}); } sort(all(dist[u]), greater<pi>()); while(sz(dist[u]) > BLOCK) dist[u].pop_back(); } vector<bool> bussy(n+3, 0); FOR(_, 1, q) { int t, y; cin >> t >> y; vector<int> V; FOR(i, 1, y) { int x; cin >> x; bussy[x] = 1; V.pb(x); } int ans = -inf; if(y >= BLOCK) { vector<int> dp(n+3, -1); dp[t] = 0; ROF(u, t, 1) { if(dp[u] == -1) continue; FOR(i, 0, sz(adj[u]) -1) { int v = adj[u][i]; dp[v] = max(dp[v], dp[u] + 1); } if(bussy[u]) continue; ans = max(ans, dp[u]); } } else { FOR(i, 0, sz(dist[t]) -1) { int du = dist[t][i].fi; int idx = dist[t][i].se; if(bussy[idx]) continue; ans = max(ans, du); } } cout << ans << '\n'; FOR(i, 0, y - 1) bussy[V[i]] = 0; } } signed main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); if(fopen(data".inp", "r")) { freopen(data".inp","r",stdin); freopen(data".out","w",stdout); } inp(); solve(); return 0; }

Compilation message (stderr)

bitaro.cpp: In function 'int main()':
bitaro.cpp:145:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
  145 |         freopen(data".inp","r",stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
bitaro.cpp:146:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
  146 |         freopen(data".out","w",stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...