hdu1312---------------DFS模板(调用STL)
很明显啊!调用STL简单多了,省了30行代码
#include<iostream>
#include<queue>
#include<string.h>
using namespace std;
char ch[22][22];
int r,c;
int XX[4][2]={{-1,0},{0,-1},{0,1},{1,0}};
struct node{int x,y;};
int bfs(int bx,int by,int Sum)
{
int k;
int xx,yy;
node t,tt;
queue<node>qu;
t.x=bx,t.y=by;
qu.push(t);
while(!qu.empty())
{
t=qu.front();
qu.pop();
for(k=0;k<4;k++)
{
xx=t.x+XX[k][1],yy=t.y+XX[k][0];
if(xx>=0&&xx<c&&yy>=0&&yy<r&&ch[xx][yy]!='#')
{
Sum++;
ch[xx][yy]='#';
tt.x=xx,tt.y=yy;
qu.push(tt);
}
}
}
return Sum;
}
int main()
{
int i,j,bx,by,Sum;
while(cin>>c>>r&&c&&r)//c列 r行
{
memset(ch,0,sizeof(ch));
for(i=0;i<r;i++)
for(j=0;j<c;j++)
{
cin>>ch[j][i];
if(ch[j][i]=='@')
{
bx=j,by=i;
ch[j][i]='#';
}
}
Sum=1;
cout<< bfs(bx,by,Sum)<<endl;
}
return 0;
}