ZOJ 1709 Oil Deposits
又是一个BFS,最近搜索上瘾了……
#include <iostream>
#include <queue>
using namespace std;
char Rer[101][101];
struct NODE
{
int x,y;
};
int main()
{
NODE MYKEY[8];
MYKEY[0].x = 1;
MYKEY[0].y = 0;
MYKEY[1].x = 0;
MYKEY[1].y = 1;
MYKEY[2].x = -1;
MYKEY[2].y = 0;
MYKEY[3].x = 0;
MYKEY[3].y = -1;
MYKEY[4].x = 1;
MYKEY[4].y = 1;
MYKEY[5].x = -1;
MYKEY[5].y = 1;
MYKEY[6].x = 1;
MYKEY[6].y = -1;
MYKEY[7].x = -1;
MYKEY[7].y = -1;
queue<NODE> IQ;
NODE Temp,TT;
int m,n,i,j,cnt,x;
while(cin >> m >> n)
{
if(m==0&&n==0) break;
for(i=0;i<m;++i)
for(j=0;j<n;++j)
{
cin >> Rer[i][j];
}
cnt = 0;
for(i=0;i<m;++i)
for(j=0;j<n;++j)
{
if(Rer[i][j]=='@')
{
cnt++;
Temp.x = i;
Temp.y = j;
Rer[i][j] = '*';
IQ.push(Temp);
while(!IQ.empty())
{
Temp = IQ.front();
IQ.pop();
for(x=0;x<8;++x)
{
TT.x = Temp.x + MYKEY[x].x;
TT.y = Temp.y + MYKEY[x].y;
//cout << "------------->" << TT.x << "<----------------" << TT.y << endl;
if(TT.x>=0&&TT.x<m&&TT.y>=0&&TT.y<n&&Rer[TT.x][TT.y]=='@')
{
Rer[TT.x][TT.y] = '*';
IQ.push(TT);
}
}
}
}
}
cout << cnt << endl;
}
return 0;
}
浙公网安备 33010602011771号