学了一种新的邻接矩阵存图方式
#include<iostream>
#include<cstring>
#include<vector>
using namespace std;
const int N = 1010, M =10010;
int n,m,k;
int h[N],e[M],ne[M],idx;
int d[N];
int res;
int a[101];
bool st[N];
vector<int> g[N];
void add(int a,int b)
{
e[idx]=b; ne[idx]=h[a]; h[a]=idx++;
}
void dfs(int x)
{
d[x]++; st[x]=true;
for(int i=0;i<g[x].size();i++)
{
if(!st[g[x][i]]) dfs(g[x][i]);
}
}
int main()
{
cin>>k>>n>>m;
for(int i=1;i<=k;i++) cin>>a[i];
while(m--)
{
int a,b;
scanf("%d %d",&a,&b);
g[a].push_back(b);
}
for(int i=1;i<=k;i++)
{
memset(st,0,sizeof st);
dfs(a[i]);
}
int res=0;
for(int i=1;i<=n;i++) if(d[i]==k) res++;
cout<<res;
return 0;
}