搜索:zoj 1709 || poj 1562 Oil Deposits—FS )
【转】http://blog.csdn.net/zxy_snow/article/details/5947298
?
#include<stdio.h>#include <stdlib.h>#include <iostream>#include <memory.h>using namespace std;int map[110][110];int visit[110][110];int m,n,cou;int dir[16] = { 1,0,-1,0,0,1,0,-1,1,1,1,-1,-1,1,-1,-1};int fi,fj;int find(){for(int i=1; i<=m; i++)for(int k=1; k<=n; k++){if(!visit[i][k] && map[i][k]){fi = i;fj = k;return 1;}}return 0;}void DFS(int i , int j ){visit[i][j] = 1;for(int k=0; k<16; k+=2){int a = i+dir[k];int b = j+dir[k+1];if( a>=1 && a<=m && b>=1 && b<=n && map[a][b] && !visit[a][b] ){visit[a][b] = 1;DFS(a,b);}}} int main(void){char str[110];while( cin >> m >> n && m ){cou = 0;memset(visit,0,sizeof(visit));for(int i=1; i<=m ;i++){cin >> str;for(int k=0; k<n; k++)map[i][k+1] = (str[k] == '*'? 0 : 1);}while( find() ){cou++;DFS(fi,fj);}cout << cou << endl;} return 0;}
?