#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 发布
本文介绍了一个解决迷宫问题的深度优先搜索(DFS)算法实现。通过遍历迷宫地图,使用递归的方式找到从指定起点出发可以到达的所有点,并计算这些点的数量。该算法应用于一个特定的竞赛题目中,通过输入迷宫的大小及地图状态,输出可达点的总数。
407

被折叠的 条评论
为什么被折叠?



