标签:
1 #include<stdio.h> 2 #include<string.h> 3 #include<math.h> 4 #include<iostream> 5 #include<algorithm> 6 #include<queue> 7 #include<vector> 8 #include<set> 9 #include<stack> 10 #include<string> 11 #include<sstream> 12 #include<map> 13 #include<cctype> 14 using namespace std; 15 struct node 16 { 17 int x,y,time,step; 18 }; 19 int a[10][10],n,m,b[4][2]={0,-1,0,1,-1,0,1,0},mark; 20 queue<node>Q; 21 int BFS(int x,int y) 22 { 23 node q={x,y,6,0}; 24 Q.push(q); 25 while(!Q.empty()) 26 { 27 node e=Q.front(); 28 Q.pop(); 29 for(int i=0;i<4;i++) 30 { 31 q.x=e.x+b[i][0],q.y=e.y+b[i][1],q.time=e.time-1,q.step=e.step+1; 32 if(q.x>=0&&q.x<m&&q.y>=0&&q.y<n&&q.time>0&&a[q.y][q.x]!=0) 33 { 34 if(a[q.y][q.x]==3) 35 return q.step; 36 if(a[q.y][q.x]==4) 37 { 38 q.time=6; 39 a[q.y][q.x]=0; 40 } 41 Q.push(q); 42 } 43 } 44 } 45 return -1; 46 } 47 int main() 48 { 49 int t,sx,sy; 50 scanf("%d",&t); 51 while(t--) 52 { 53 scanf("%d%d",&n,&m); 54 for(int i=0;i<n;i++) 55 { 56 for(int j=0;j<m;j++) 57 { 58 scanf("%d",&a[i][j]); 59 if(a[i][j]==2) 60 { 61 sx=j; 62 sy=i; 63 } 64 } 65 } 66 while(!Q.empty()) 67 Q.pop(); 68 mark=BFS(sx,sy); 69 printf("%d\n",mark); 70 } 71 }
标签:
原文地址:http://www.cnblogs.com/A-FM/p/5350172.html