奶牛野餐 题解
题目在主页,如有出错请指出
include <bits/stdc++.h>
using namespace std;
int a[105], mark[1005];
bool vis[1005];
vector < int > v[1005];
void dfs(int x)
{
vis[x] = 1;
mark[x]++;
for (auto i : v[x])
if (vis[i] == 0) dfs(i);
}
int main()
{
int k, n, m;
cin >> k >> n >> m;
for (int i = 1; i <= k; i++)
cin >> a[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);
if (vis[i] == 0 && a[i] != 0) dfs(a[i]);
}
int cnt = 0;
for (int i = 1; i <= n; i++)
if (mark[i] == k) cnt++;
cout << cnt << endl;
return 0;
}