Submission #1177506

#TimeUsernameProblemLanguageResultExecution timeMemory
1177506tnknguyen_Long Mansion (JOI17_long_mansion)C++20
10 / 100
659 ms172044 KiB
#include <bits/stdc++.h> using namespace std; #define endl '\n' #define ll long long #define len(s) (int)s.size() #define int long long #define pii pair<int, int> #define fi first #define se second #define MASK(k) (1LL << (k)) int n, q; const int MX = 5e5 + 5; vector<int> keys[MX]; int C[MX]; pii Q[MX]; namespace SUB12{ bool ok(){ return (n <= 5000); } int ans[5005][5005], vi[MX], viid; void bfs(int u){ ++viid; for(int x : keys[u]) vi[x] = viid; for(int l=u, r=u;;){ bool ok = 0; if(l > 1 && vi[C[l-1]] == viid){ l--; for(int x : keys[l]) vi[x] = viid; ok = 1; } if(r < n && vi[C[r]] == viid){ r++; for(int x : keys[r]) vi[x] = viid; ok = 1; } ans[u][l] = ans[u][r] = 1; if(!ok) break; } } void solve(){ for(int i=1; i<=n; ++i) bfs(i); for(int i=1; i<=q; ++i){ int u, v; tie(u, v) = Q[i]; cout << (ans[u][v] ? "YES\n" : "NO\n"); } exit(0); ////// /////// } } int32_t main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); //freopen("main.inp","r",stdin); //freopen("main.out","w",stdout); cin >> n; for(int i=1; i<n; ++i) cin >> C[i]; for(int i=1; i<=n; ++i){ int m; cin >> m; while(m--){ int x; cin >> x; keys[i].push_back(x); } } cin >> q; for(int i=1; i<=q; ++i){ int u, v; cin >> u >> v; Q[i] = {u, v}; } SUB12::solve(); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...