poj 3256
来源:互联网 发布:淘宝默认头像 编辑:程序博客网 时间:2024/04/29 21:12
/* 枚举每个牛点,计算出能到达其他的所有点的数目 */#include <stdio.h>#include <string.h>int n;bool map[1001][1001];int nums[1001];int cows[1001];bool vis[1001];void dfs(int now){ vis[now]=1; nums[now]++; for(int i=1;i<=n;i++) { if(map[now][i] && !vis[i]) { dfs(i); } } }int main(){ int k,m; int x,y; while(scanf("%d%d%d",&k,&n,&m)!=EOF) { for(int i=0;i<k;i++) { scanf("%d",&cows[i]); } memset(map,0,sizeof(map)); memset(nums,0,sizeof(nums)); for(int i=0;i<m;i++) { scanf("%d%d",&x,&y); map[x][y]=1; } for(int i=0;i<k;i++) { memset(vis,0,sizeof(vis)); dfs(cows[i]); } int count=0; //for(int i=1;i<=n;i++) // printf("(i)%d %d\n",i,nums[i]); for(int i=1;i<=n;i++) if(nums[i]==k) count++; printf("%d\n",count); } return 0; }