UVA 572 Oil Deposits

基础题目!dfs,搜索图!
#include <iostream>
#include <cstring>
using namespace std;
char arr[105][105];
int m,n;
int dir[8][2]={{1,0},{1,1},{0,1},{-1,1},{-1,0},{-1,-1},{0,-1},{1,-1}};
int dfs(int x,int y)
{
  arr[x][y]='*';
  for(int k=0;k<8;++k)
  {
    int dx=x+dir[k][0];
    int dy=y+dir[k][1];
    if(0<=dx&&dx<m&&0<=dy&&dy<n&&arr[dx][dy]=='@')
    {
      dfs(dx,dy);
    }
  }
  return 0;
}
int main()
{
  while(cin>>m>>n&&m&&n)
  {
    memset(arr,0,sizeof(arr));
    int res=0;
    for(int i=0;i<m;++i)
    {
      for(int j=0;j<n;++j)
      {
          cin>>arr[i][j];
      }
    }
    for(int i=0;i<m;++i)
    {
        for(int j=0;j<n;++j)
        {
            if(arr[i][j]=='@')
            {
              res++;
              dfs(i,j);
            }
        }
    }
    cout<<res<<endl;
  }
  return 0;
}

你可能感兴趣的:(图,DFS,uva)