Submission #1307321

#TimeUsernameProblemLanguageResultExecution timeMemory
1307321erfankavianiBitaro’s Party (JOI18_bitaro)C++20
7 / 100
833 ms589824 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int, int> pii; typedef pair<ll, ll> pll; #define X first #define Y second #define endl '\n' const int MAXN = 1e6 + 10; const ll MOD = 1e9 + 7; const ll INF = 2e18; const int LOG = 22; const int SQ = 500; int n , m , q , flag[MAXN] , dp2[MAXN]; vector<int> adj[MAXN] , radj[MAXN]; vector<pii> dp[MAXN]; int main(){ ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin >> n >> m >> q; for(int i = 0; i < m; i++){ int v , u; cin >> v >> u; adj[v].push_back(u); radj[u].push_back(v); } for(int i = 1; i <= n; i++){ vector<pii> vec; vec.push_back({-1 , i}); for(int u : radj[i]){ merge(vec.begin() , vec.end() , dp[u].begin() , dp[u].end() , back_inserter(dp[i])); vec.clear(); int cnt = 0; for(int j = dp[i].size() - 1; j >= 0; j--){ if(cnt > SQ){ break; } if(flag[dp[i][j].Y] == 0){ vec.push_back({dp[i][j].X , dp[i][j].Y}); flag[dp[i][j].Y] = 1; cnt++; } } dp[i].clear(); for(auto j : vec){ flag[j.Y] = 0; } reverse(vec.begin() , vec.end()); } dp[i] = vec; for(int j = 0; j < dp[i].size(); j++){ dp[i][j].X++; } } while(q--){ int v , k; cin >> v >> k; vector<int> vec; for(int i = 0; i < k; i++){ int u; cin >> u; flag[u] = 1; vec.push_back(u); } if(k >= SQ){ dp2[v] = 0; for(int i = v - 1; i >= 1; i--){ dp2[i] = -MOD; for(int j : adj[i]){ if(j <= v){ dp2[i] = max(dp2[i] , dp2[j] + 1); } } } int mx = -1; for(int i = 1; i <= v; i++){ if(flag[i] == 0){ mx = max(mx , dp2[i]); } } cout << mx << endl; for(int i : vec){ flag[i] = 0; } continue; } int ans = -1; for(int j = dp[v].size() - 1; j >= 0; j--){ if(flag[dp[v][j].Y] == 0){ ans = dp[v][j].X; break; } } for(int i : vec){ flag[i] = 0; } cout << ans << endl; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...