Submission #1273993

#TimeUsernameProblemLanguageResultExecution timeMemory
1273993nanaseyuzukiBitaro’s Party (JOI18_bitaro)C++20
0 / 100
876 ms589824 KiB
#include <bits/stdc++.h> // Author: Kazuki_Will_Win_VOI_8703 #define fi first #define se second #define pii pair<int, int> #define int long long #define all(a) a.begin(), a.end() using namespace std; const int mn = 2e5 + 5, bm = (1 << 11) + 1, mod = 1e9 + 7, offset = 5e4, B = 5e2 + 5; const int inf = 1e18, base = 311; int n, m, q, vst[mn], d[mn], del[mn]; vector <int> a[mn]; vector <pii> f[mn]; void solve(){ cin >> n >> m >> q; for(int i = 1; i <= m; i++){ int u, v; cin >> u >> v; a[u].push_back(v); } for(int u = 1; u <= n; u++){ vector <int> cur; cur.push_back(u); for(auto j : a[u]){ for(auto [c, v] : f[j]){ if(!vst[v]) cur.push_back(v); d[v] = max(d[v], c + 1); } } for(auto v : cur) f[u].push_back({d[v], v}); sort(f[u].begin(), f[u].end(), greater <pii>()); while(f[u].size() > B) f[u].pop_back(); for(auto v : cur) vst[v] = 1, d[v] = 0; } while(q--){ int u, y; cin >> u >> y; vector <int> cur; for(int i = 1; i <= y; y++){ int zz; cin >> zz; cur.push_back(zz); del[zz] = 1; } if(y < B){ int res = 0; for(int i = 0; i < f[u].size(); i++){ auto [c, v] = f[u][i]; if(!del[v]){ res = c; break; } } cout << res << '\n'; } else{ // ko qua sqrt(n) truy van for(int i = 1; i <= n; i++) d[i] = -2e9; for(int i = 1; i <= u; i++){ if(!del[i]) d[i] = 0; for(auto v : a[i]){ d[i] = max(d[i], d[v] + 1); } } if(d[u] < 0) cout << -1 << '\n'; else cout << d[u] << '\n'; } } } signed main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); int t = 1; // cin >> t; while(t--){ solve(); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...