https://www.luogu.com.cn/problem/P2853
10分
#include<bits/stdc++.h>
using namespace std;
int k,n,m,u,v,ret,vis[10010],mp[10010],a[10010];
vector<int>g[10010];
void dfs(int u){
mp[u]++;
for(int i=0;i<g[u].size();i++){
int v=g[u][i];
if(vis[v]==0){
vis[v]=1;
dfs(v);
}
}
}int main(){
scanf("%d%d%d",&k,&n,&m);
for(int i=1;i<=k;i++){
scanf("%d",&a[i]);
}for(int i=1;i<=m;i++){
scanf("%d%d",&u,&v);
g[u].push_back(v);
}for(int i=1;i<=k;i++){
memset(vis,0,sizeof(vis));
dfs(a[i]);
}for(int i=1;i<=n;i++){
if(mp[i]==k){
ret++;
}
}printf("%d",ret);
return 0;
}