Submission #1148350

#TimeUsernameProblemLanguageResultExecution timeMemory
1148350akamizaneBitaro’s Party (JOI18_bitaro)C++20
0 / 100
6 ms10308 KiB
#include<bits/stdc++.h> using namespace std; #define debug(...) 40 using ll = long long; using pii = pair<int,int>; // #define int long long #define el cout << '\n' #define fi first #define se second #define pb push_back #define all(x) x.begin(), x.end() #define FOR(i, a, b) for (int i = (a); i <= (b); i++) #define FOD(i, a, b) for (int i = (a); i >= (b); i--) #define REP(i, n) for (int i = 0; i < (n); i++) template <class T1, class T2>bool chmax(T1 &a, T2 b){return a < b ? a = b, 1 : 0;} template <class T1, class T2>bool chmin(T1 &a, T2 b){return a > b ? a = b, 1 : 0;} void setIO(string s) { // freopen((s + ".inp").c_str(), "r", stdin); // freopen((s + ".out").c_str(), "w", stdout); freopen((s+".in").c_str(),"r",stdin); freopen((s+".out").c_str(),"w",stdout); } const int maxn = 2e5 + 5; const int mod = 998244353; const ll inf = 1e18; vector<int> ad[maxn], cur; vector<array<int, 2>> node[maxn]; int dis[maxn], vis[maxn], bad[maxn], dp[maxn]; int32_t main() { // setIO("262144"); ios_base::sync_with_stdio(false); cin.tie(NULL); int n, m, q; cin >> n >> m >> q; REP(i, m){ int u, v; cin >> u >> v; ad[v].pb(u); } const int block = 100; for (int i = 1; i <= n; i++, cur.clear()){ for (auto j : ad[i]){ for (auto [w, u] : node[j]){ if (vis[u] == i) chmax(dis[u], w + 1); else vis[u] = i, dis[u] = w + 1, cur.pb(u); } } for (auto u : cur) node[i].pb({dis[u], u}); node[i].pb({0, i}); sort(node[i].rbegin(), node[i].rend()); while(node[i].size() > block) node[i].pop_back(); } FOR(cnt, 1, q){ int t, k, x, ans = -1; cin >> t >> k; REP(i, k){ int x; cin >> x; bad[x] = cnt; } if (k < block){ for (auto [w, u] : node[t]){ if (bad[u] != cnt){ ans = w; break; } } } else{ fill(dp, dp + n + 1, -1); for (int i = 1; i <= t; i++){ if (bad[i] != cnt) dp[i] = 0; for (auto j : ad[i]){ if (dp[j] != -1) chmax(dp[j], dp[i] + 1); } } ans = dp[t]; } cout << ans << "\n"; } return 0; }

Compilation message (stderr)

bitaro.cpp: In function 'void setIO(std::string)':
bitaro.cpp:25:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   25 |     freopen((s+".in").c_str(),"r",stdin);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bitaro.cpp:26:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   26 |     freopen((s+".out").c_str(),"w",stdout);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...