Submission #853886

#TimeUsernameProblemLanguageResultExecution timeMemory
853886overwatch9Bitaro’s Party (JOI18_bitaro)C++17
0 / 100
2 ms6236 KiB
#include <iostream> #include <vector> #include <algorithm> #include <queue> using namespace std; const int maxn = 1e5 + 1; vector <int> adj[maxn], adjr[maxn]; int indeg[maxn], outdeg[maxn], processed[maxn]; bool blocked[maxn]; int main() { int n, m, q; cin >> n >> m >> q; for (int i = 0; i < m; i++) { int a, b; cin >> a >> b; adj[a].push_back(b); adjr[b].push_back(a); indeg[b]++; outdeg[a]++; } int t, y; cin >> t >> y; for (int i = 0; i < y; i++) { int x; cin >> x; blocked[x] = true; } int ans = -1; priority_queue <pair <int, int>> pq; pq.push({0, t}); vector <int> dis(n+1, -1); dis[t] = 0; while (!pq.empty()) { int a = pq.top().second; pq.pop(); if (processed[a]) continue; processed[a] = true; if (!blocked[a]) ans = max(ans, dis[a]); for (auto i : adjr[a]) { indeg[i]--; pq.push({-indeg[i], i}); dis[i] = dis[a] + 1; if (!blocked[i]) ans = max(ans, dis[i]); } } cout << ans << '\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...