#include <iostream>
#include <cstring>
#include <vector>
#include <map>
#include <set>
#include <algorithm>
#include <iterator>
#include <list>
#include <stack>
#include <math.h>
using namespace std;
/*
T2 杭电1312
*/
int d[4][2]={{0,1},{0,-1},{1,0},{-1,0}};
char a[22][22];
int sum=0;
int n,m;
void dfs(int x,int y)
{
int tx,ty;
for(int i=0;i<4;i++)
{
tx=x+d[i][0];
ty=y+d[i][1];
if(a[tx][ty]== '.'&& tx<=n &&tx>=1 &&ty<=m &&ty>=1)
{
a[tx][ty]='#';
sum++;
dfs(tx,ty);
}
}
}
int main()
{
int i,j;
while(cin>>m>>n && (n!=0 || m!=0))
{
sum=0;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
cin>>a[i][j];
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
if(a[i][j]=='@')
dfs(i,j);
}
}
cout<<sum+1<<endl;
}
return 0;
}
图论 DFS HDU 1312
最新推荐文章于 2019-10-18 20:09:39 发布