您的位置:首页 > 其它

poj 1562 dfs

2016-05-30 12:34 344 查看
http://poj.org/problem?id=1562

#include<iostream>
using namespace std;
int n=0,m=0,sum=0;
bool aa[105][105];
int dir[8][2]={-1,0,
1,0,
0,-1,
0,1,
1,1,
-1,-1,
-1,1,
1,-1
};
void dfs(int a,int b)
{
if(!aa[a][b])return;
aa[a][b]=0;
for(int i=0;i<8;i++)
{
int a1=a+dir[i][0];
int b1=b+dir[i][1];
if(a1>=0&&a1<m&&b1>=0&&b1<n)
{
//  aa[a1][b1]=0;
dfs(a1,b1);

}
}
}
int main()
{
while(cin>>m>>n)
{      sum=0;
if(m==0)break;
for(int i=0;i<m;i++)
{       char ch;
for(int j=0;j<n;j++)
{ cin>>ch;
if(ch=='*')aa[i][j]=0;
else aa[i][j]=1;
}
}

for(int i=0;i<m;i++)

for(int j=0;j<n;j++)
{
if(aa[i][j]==1)
{
dfs(i,j);
sum++;
}
}

cout<<sum<<endl;

}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: