题目:
k(1≤k≤100)只奶牛分散在n(1≤n≤1000)个牧场。
现在它们要集中起来进餐。
牧场之间有m(1≤m≤10000)条有向路连接,而且不存在起点和终点相同的有向路。
它们进餐的地点(牧场)必须是所有奶牛都可到达的地方.那么,有多少这样的牧场呢?
第一行共三个整数k,n,m
接下来k行,每行一个整数表示一只奶牛所在的牧场编号
接下来m行,每行两个整数,表示一条有向路的起点和终点
所有奶牛都可到达的牧场个数
输入样例:
2 4 4
2
3
1 2
1 4
2 3
3 4
输出样例:
2
但是我这个深度优先DFS的代码输出是0
代码:
#include <bits/stdc++.h>
using namespace std;
int num[1005],vis[1005],cnt[1005];
int k,n,m,ans;
vector<int>v[1005];
void DFS(int x)
{
cnt[x]++;
vis[x]=1;
for(int i=1;i<=v[x].size();i++)
{
if(!vis[v[x][i]])
{
DFS(v[x][i]);
}
}
}
int main()
{
cin >> k >> n >> m;
for(int i=1;i<=k;i++)
{
cin >> num[i];
}
for(int i=1;i<=m;i++)
{
int x,y;
cin >> x >> y;
v[x].push_back(y);
}
for(int i=1;i<=k;i++)
{
memset(vis,0,sizeof(vis));
DFS(num[i]);
}
for(int i=1;i<=n;i++)
{
if(cnt[i]==k)
{
ans++;
}
}
cout<<ans;
return 0;
}
有没有人知道怎么改的?知道的请帮我一下,谢谢!