写了十分钟的简单dfs+图
一遍就直接AC,自己也挺意外的
花费时间最长的地方是读题
由于好半会没看懂输入格式
是我英语水平太fw了吗
建议增加题目输入和输出翻译
简要code
#include<bits/stdc++.h>
using namespace std;
#define maxn 10086
int ans=0,vis[maxn];
vector<int>p[maxn];
int n,k,m,cow[maxn],num[maxn];
void dfs(int x){
vis[x]=1;
num[x]++;
for(int i=0;i<p[x].size();i++)
if(!vis[p[x][i]])
dfs(p[x][i]);
}
int main(){
ios::sync_with_stdio(0);
memset(num,0,sizeof(num));
cin>>k>>n>>m;
for(int i=1;i<=k;i++)
cin>>cow[i];
for(int i=1;i<=m;i++){
int x,y;
cin>>x>>y;
p[x].push_back(y);
}
for(int i=1;i<=k;i++){
memset(vis,0,sizeof(vis));
dfs(cow[i]);
}
for(int i=1;i<=n;i++)
if(num[i]==k)
ans++;
cout<<ans<<endl;
}