Submission #532302

#TimeUsernameProblemLanguageResultExecution timeMemory
532302MohamedFaresNebiliBitaro’s Party (JOI18_bitaro)C++14
0 / 100
4 ms5068 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; using ii = pair<ll, ll>; using vi = vector<int>; using db = double; #define ff first #define ss second #define pb push_back #define all(x) x.begin(), x.end() #define lb lower_bound #define ub upper_bound int n, m, q, batch = 555; vector<int> adj[100005], rev[100005], top; int32_t main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n >> m >> q; for(int l = 0; l < m; l++) { int u, v; cin >> u >> v; adj[u].pb(v); rev[v].pb(u); } while(q--) { int a, k; cin >> a >> k; int res = -1; vector<bool> vis(n + 1, 0), vis0(n + 1, 0); vector<int> dis(n + 1, -1); dis[a] = 0; for(int l = 0; l < k; l++) { int u; cin >> u; vis0[u] = 1; } if(a <= batch) { queue<int> q; q.push(a); while(!q.empty()) { a = q.front(); vis[a] = 1; q.pop(); if(vis0[a] == 0) res = max(res, dis[a]); for(auto u : rev[a]) { if(dis[a] + 1 > dis[u]) dis[u] = dis[a] + 1, q.push(u); } } } else { } cout << res << "\n"; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...