UVA572(油田)简单的深搜问题

来源:互联网 发布:中国植物信息数据库 编辑:程序博客网 时间:2024/05/01 08:01
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=513#include "stdio.h"
#include <iostream>
#include <string.h>
using namespace std;
int vis[150][150];
char mat[150][150];

void dfs(int x,int y){
if(mat[x][y]=='*'||vis[x][y])
return ;
vis[x][y]=1;
dfs(x-1,y-1);dfs(x-1,y);dfs(x-1,y+1);
dfs(x,y-1); dfs(x,y+1);
dfs(x+1,y-1);dfs(x+1,y);dfs(x+1,y+1);


}



int main(){
int m,n;

string s;
while(scanf("%d%d",&m,&n)!=EOF)
{
memset(mat,'*',sizeof(mat));
memset(vis,0,sizeof(vis));
if(m==0&&n==0)
return 0;
else
for(int i=0;i<m;i++){
cin>>s;
for(int j=0;j<n;j++)
mat[i+1][j+1]=s[j];
}
int count=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++)
{
if(!vis[i][j]&&mat[i][j]=='@')
{
count++;dfs(i,j);
}
}
}
cout<<count<<endl;

}
return 0;
}
0 0
原创粉丝点击