码迷,mamicode.com
首页 > 其他好文 > 详细

dfs5

时间:2014-11-16 10:33:30      阅读:98      评论:0      收藏:0      [点我收藏+]

标签:io   ar   os   sp   for   div   on   bs   ad   

搜索练习一

K(1≤K≤100)只奶牛分散在N(1≤N≤1000)个牧场.现在她们要集中起来进餐.牧场之间有M(1≤M≤10000)条有向路连接,而且不存在起点和终点相同的有向路.她们进餐的地点必须是所有奶牛都可到达的地方.那么,有多少这样的牧场呢?

 

第1行输入K,N,M.接下来K行,每行一个整数表示一只奶牛所在的牧场编号.接下来M行,每行两个整数,表示一条有向路的起点和终点。

 

所有奶牛都可到达的牧场个数。

 

 

#include<iostream>

#include<cstdio>

#include<cstring>

#include<cstdlib>

#include<algorithm>

#include<cmath>

#include<string>

#include<vector>

#include<queue>

using namespace std;

vector<int> e[10005];

int k,n,m,a[10005],vis[10005],f[10005],ans=0;

void dfs(int s)

{

     f[s]++;

     vis[s]=true;

     if(f[s]==k)

     ans++;

     for(int i=0;i<e[s].size();i++)

     if(!vis[e[s][i]])

     dfs(e[s][i]);

}

int main()

{

  scanf("%d%d%d",&k,&n,&m);

  for(int i=1;i<=k;i++)

  scanf("%d",&a[i]);

  for(int i=1;i<=m;i++)

  {

int x,y;

scanf("%d%d",&x,&y);

e[x].push_back(y);

    }

    for(int i=1;i<=k;i++)

    {

memset(vis,0,sizeof(vis));

dfs(a[i]);

    }

    printf("%d\n",ans);

    return 0;

}

dfs5

标签:io   ar   os   sp   for   div   on   bs   ad   

原文地址:http://www.cnblogs.com/a972290869/p/4101042.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!