6.4.1 用DFS求连通块 UVA 572 Oil Deposits DFS水题
2016-06-23 19:42
267 查看
#include <cstdio> #include <cstring> int M,N; char A[101][101]; int B[101][101]={}; void DFS(int i,int j,int ID) { if(i<1||i>M||j<1||j>N) return;//界外 if(B[i][j]||A[i][j]!='@') return;//已经访问过或者不是@ B[i][j]=ID;//标识所属块 同时相当于标识已走 DFS(i-1,j-1,ID);DFS(i-1,j,ID);DFS(i-1,j+1,ID); DFS(i,j-1,ID); DFS(i,j+1,ID); DFS(i+1,j-1,ID);DFS(i+1,j,ID);DFS(i+1,j+1,ID); } int Handle(void) { int ID=0; for(int i=1;i<=M;i++) for(int j=1;j<=N;j++) if(A[i][j]=='@'&&!B[i][j]) DFS(i,j,++ID); return ID; } int main(void) { //freopen("D:\\test.txt","r",stdin); while(~scanf("%d %d\n",&M,&N)&&M) { memset(A,0,sizeof(A)); memset(B,0,sizeof(B)); for(int i=1;i<=M;i++) scanf("%s",A[i]+1); printf("%d\n",Handle()); // for(int i=1;i<=M;i++,putchar('\n')) // for(int j=1;j<=N;j++) printf("%4d ",B[i][j]); } }
“`
相关文章推荐
- PAT(乙级) 1006. 换个格式输出整数
- ImageLoader blur
- 关于前端我的第一篇博客
- Android四大组件之BroadcastReceiver
- codeforces round 17 D(扩展欧拉函数的应用)
- mysql 分区
- Failed to run the WC DB work queue associated with 错误的解决
- 1775 Sum of Factorials 全排列解法+规律解法
- Linux下使用fdisk扩大分区容量
- Hibernate——session(2)
- 在BrodcastReceiver和Service内启动Activit和弹出dialog需要注意的地方
- 编译php7 opcache问题
- 3278 Catch That Cow BFS入门题
- Linux下使用fdisk扩大分区容量
- 可视化日历
- 基础常用的正则表达式
- 解决Linux 软件包的依赖关系
- Hiberbate ——session(1)
- Linux 搭建svn版本库
- 1061 青蛙的约会 扩展欧几里得式 入门题