看哪些牧场有牛cowpt[]
每个有牛的牧场遍历一遍看能走到哪里
都能走到的(ans[] == k)就是答案
#include <bits/stdc++.h>
using namespace std;
const int N=1005;
int n,m,k;
vector<int> v[N];
bool cowpt[N];
bool f[N];
int ans[N];
void F(int x)
{
ans[x]++;
for(int i=0;i<int(v[x].size());i++)
if(!f[v[x][i]])
{
f[v[x][i]] = 1;
F(v[x][i]);
}
}
int main()
{
cin >> k >> n >> m;
for(int i=1;i<=k;i++)
{
int x;
cin >> x;
cowpt[x] = 1;
}
for(int i=1;i<=m;i++)
{
int x,y;
cin >> x >> y;
v[x].push_back(y);
}
for(int i=1;i<=n;i++)
{
memset(f,0,sizeof(f));
if(cowpt[i]){
f[i] = 1;
F(i);
}
}
int cnt=0;
for(int i=1;i<=n;i++)
if(ans[i] == k)
cnt++;
cout << cnt;
return 0;
}