poj 3256(DFS)
http://acm.pku.edu.cn/JudgeOnline/problem?id=3256
题意:有k头牛,n个牧场,m条路(每条路相连两个牧场且单向),求全部牛都能到达的牧场有几个。
分析:用DFS,从每头牛所在牧场开始,走遍该牛能到的牧场,对应能到达的牧场记录来过的牛数
心得:原先我是对每个牧场作为起点,进行DFS,当然条件是有路并且对应牧场有牛。不过比较牧场数(n≤1000)和牛数(k≤100),实在太浪费时间了。
部分代码:
main()里的调用部分:
for(i=1; i<=cow; i++)//对应某只牛 { memset(vis, 0, sizeof(vis));//初始化下一个牧场 dfs(add[i]); }
dfs()
void dfs(int r) { int i; vis[r] = 1;//标记已经来过 num[r]++; //对应来该牧场牛数加一 for(i=1; i<=pasture; i++) if(!vis[i] && map[r][i]) dfs(i); }
/**************************************************************************
                 
原文来自博客园——Submarinex的博客: www.cnblogs.com/submarinex/               
 
*************************************************************************/