调了半天也没发现哪里有问题?
测试只有#7错了,超疑惑。
下面是我的c++代码
#include <bits/stdc++.h>
using namespace std;
int k,n,m,cow[101],f[1001],s[10001],e[10001],ans,fa[1001];
bool vis[1001];
vector <int> q[10001];
int dfs(int num,int now)
{
f[now]+=num;
int len=q[now].size(),x=len;
for(int i = 1 ; i<=len ; i++)
{
--x;
if(vis[q[now][x]]==true)
{
vis[q[now][x]]=false;
dfs(num,q[now][x]);
}
}
}
int main()
{
cin>>k>>n>>m;
for(int i = 1 ; i<=k ; i++)
{
cin>>cow[i];
fa[cow[i]]++;
}
for(int i = 1 ; i<=m ; i++)
{
cin>>s[i]>>e[i];
q[s[i]].push_back(e[i]);
}
for(int i = 1 ; i<=n ; i++)
{
if(fa[i]>0)
{
memset(vis,true,sizeof(vis));
dfs(fa[i],i);
}
}
for(int i = 1 ; i<=n ; i++)
{
if(f[i]>=k)
ans++;
}
cout<<ans;
return 0;
}