学长代码(杭电2645)
1 #include <bits/stdc++.h> 2 using namespace std; 3 4 int n,m; 5 char s[200][200]; 6 int ma[200][200],ans[200][200]; 7 bool vis[200][200]; 8 int dir[4][2]={-1,0,0,-1,1,0,0,1}; 9 struct Node 10 { 11 int x,y; 12 int step; 13 }; 14 15 int bfs(int x,int y) 16 { 17 memset(vis,0,sizeof(vis)); 18 Node a,b,c; 19 a.x=x,a.y=y,a.step=0; 20 queue<Node>q; 21 q.push(a); 22 while(!q.empty()) 23 { 24 b=q.front(); 25 q.pop(); 26 vis[b.x][b.y]=1; 27 if(ma[b.x][b.y]==1)return b.step; 28 for(int i=0;i<4;i++) 29 { 30 c=b; 31 c.x+=dir[i][0]; 32 c.y+=dir[i][1]; 33 c.step++; 34 if(c.x<0||c.x>=n||c.y<0||c.y>=m||vis[c.x][c.y])continue; 35 q.push(c); 36 } 37 } 38 return -1; 39 } 40 41 int main() 42 { 43 while(~scanf("%d%d",&n,&m)) 44 { 45 for(int i=0;i<n;i++) 46 scanf("%s",s[i]); 47 for(int i=0;i<n;i++) 48 for(int k=0;s[i][k]!='