#include <bits/stdc++.h>
using namespace std;
int main() {
int n, m, q;
cin >> n >> m >> q;
vector<vector<int>> adj(n);
for(int i=0,s,e;i<m;i++) {
cin >> s >> e;
s--; e--;
adj[s].push_back(e);
}
int t, y, x;
cin >> t >> y;
t--;
vector<int> dist(n,-1e9);
vector<bool> vis(n,0);
auto dfs = [&adj,&dist,&vis,t](auto &self, int x) -> void {
vis[x] = 1;
if(x == t)
dist[x] = 0;
for(auto i: adj[x]) {
if(!vis[i])
self(self, i);
dist[x] = max(dist[x], dist[i] + 1);
}
};
for(int i=0;i<=t;i++)
if(!vis[i])
dfs(dfs, i);
for(int i=0;i<y;i++) {
cin >> x;
dist[x-1] = -1;
}
cout << *max_element(dist.begin(),dist.end());
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |