标签:dfs
简单的DFS
Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 12801 | Accepted: 6998 |
Description
Input
Output
Sample Input
1 1 * 3 5 *@*@* **@** *@*@* 1 8 @@****@* 5 5 ****@ *@@*@ *@**@ @@@*@ @@**@ 0 0
Sample Output
0 1 2 2
#include <stdio.h> #include <stdlib.h> #include <malloc.h> #include <limits.h> #include <ctype.h> #include <string.h> #include <string> #include <math.h> #include <algorithm> #include <iostream> #include <queue> #include <stack> #include <deque> #include <vector> #include <set> //#include <map> using namespace std; #define MAXN 100 + 10 char map[MAXN][MAXN]; int vis[MAXN][MAXN]; int m,n; //int count; int xx[8] = {-1,-1,0,1,1,1,0,-1}; int yy[8] = {0,1,1,1,0,-1,-1,-1}; void DFS(int x,int y){ int i; for(i=0;i<8;i++){ int dx = x+xx[i]; int dy = y+yy[i]; if(dx>=0 && dx<m && dy>=0 && dy<n){ if(map[dx][dy]=='@' && vis[dx][dy]==0){ vis[dx][dy] = 1; DFS(dx,dy); //vis[dx][dy] = 0; } } } return ; } int main(){ int i,j; int ans; while(~scanf("%d%d",&m,&n)){ if(m==0 && n==0){ break; } for(i=0;i<m;i++){ scanf("%s",map[i]); } ans = 0; memset(vis,0,sizeof(vis)); for(i=0;i<m;i++){ for(j=0;j<n;j++){ if(map[i][j]=='@' && vis[i][j]==0){ vis[i][j] = 1; ans++; DFS(i,j); //vis[i][j] = 0; } } } printf("%d\n",ans); } }
标签:dfs
原文地址:http://blog.csdn.net/zcr_7/article/details/39716979