poj 3256 Cow Picnic 深度搜索(DFS)
时间:2011-03-11 来源:银志圆
1 /*
2 Author:银志圆
3 State:AC
4 题意:找出与其所有牛所在草地相连的草地的个数
5 思路:求某一点入度=K的点的个数 深度搜索
6 */
7 #include<iostream>
8 #define Maxn 2006
9 using namespace std;
10 int G[Maxn][Maxn],K,N,M,pos[150],cou[Maxn];
11 bool mark[Maxn];
12 void dfs(int u)
13 {
14 cou[u]++;
15 mark[u]=true;
16 for(int v=1;v<=G[u][0];v++)if(!mark[G[u][v]])
17 {
18 dfs(G[u][v]);
19 }
20 }
21 int main()
22 {
23 cin>>K>>N>>M;
24 memset(cou,0,(N+2)*sizeof(int));
25 memset(mark,false,(N+2)*sizeof(bool));
26 int x,y;
27 pos[0]=0;
28 for(int i=0;i<K;i++)
29 {
30 cin>>pos[i];
31 }
32 for(int i=1;i<=N;i++) G[i][0]=0;
33 while(M--)
34 {
35 cin>>x>>y;
36 G[x][++G[x][0]]=y;
37 }
38 for(int i=0;i<K;i++)
39 {
40 memset(mark,false,(N+2)*sizeof(bool));
41 dfs(pos[i]);
42 }
43 int ans=0;
44 for(int i=1;i<=N;i++)if(cou[i]==K)
45 ans++;
46 cout<<ans<<endl;
47 return 0;
48 }
相关阅读 更多 +