This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |