poj 1562 簡單 bfs

來源:互聯網
上載者:User

標籤:os   io   for   ar   amp   size   ad   ios   

// 簡單 bfs

#include <iostream>
#include<fstream>
using namespace std;

char map[110][110];
int flag[110][110];
int qu[11000][2],qe,qs,m,n;
int add[8][2]={-1,-1,  -1,0, -1,1,   0,-1,  0,1,  1,-1,    1,0,   1,1 };

void bfs(int r,int c)
{    int i,tr,tc;
     qs=qe=0;   flag[r][c]=1;   qe++;
     qu[qs][0]=r;  qu[qs][1]=c;
     while(qs<qe)
     {  for(i=0;i<8;i++)
 {   tr=qu[qs][0]+add[i][0];  tc=qu[qs][1]+add[i][1];
     if(tr<=m&&tr>=1&&tc<=n&&tc>=1&&flag[tr][tc]==0&&map[tr][tc]==‘@‘)
     {    qu[qe][0]=tr;     qu[qe][1]=tc;    
                 flag[tr][tc]=1;     qe++; 
            }
 }
 qs++;
    }
}

int main()
{    int i,j;
     while(scanf("%d%d",&m,&n),m)
     {    int count=0;    memset(flag,0,sizeof(flag));   
          memset(qu,0,sizeof(qu));
          for(i=1;i<=m;i++)    scanf("%s",map[i]+1);
          for(i=1;i<=m;i++)
       for(j=1;j<=n;j++)
      if(flag[i][j]==0&&map[i][j]==‘@‘)
      { bfs(i,j); count++; }
          printf("%d\n",count);
     }
     return 0;
}

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.