标签:
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 3239 Accepted Submission(s): 927
1 //2016.8.4 2 #include<iostream> 3 #include<cstdio> 4 #include<queue> 5 #include<cstring> 6 7 using namespace std; 8 9 struct node 10 { 11 int x, y, sec; 12 }; 13 char m[105][105]; 14 int vis[105][105][12]; 15 int c, r, k, T, sx, sy, ex, ey; 16 int dx[4] = {1, 0, -1, 0}; 17 int dy[4] = {0, 1, 0, -1}; 18 19 void bfs() 20 { 21 node start; 22 start.x = sx; start.y = sy; start.sec = 0; 23 queue<node> q; 24 q.push(start); 25 vis[sx][sy][0] = 1; 26 while(!q.empty()) 27 { 28 node tmp = q.front(); 29 node in; 30 q.pop(); 31 for(int i = 0; i < 4; i++) 32 { 33 int nx = tmp.x+dx[i]; 34 int ny = tmp.y+dy[i]; 35 in.x = nx; in.y = ny; in.sec = tmp.sec+1; 36 if(nx>=0&&nx<r&&ny>=0&&ny<c&&!vis[nx][ny][in.sec%k]) 37 { 38 if(in.x == ex && in.y == ey) 39 { 40 cout<<in.sec<<endl; 41 return; 42 } 43 if((tmp.sec+1)%k==0 || m[nx][ny]==‘.‘ || m[nx][ny]==‘Y‘) 44 { 45 q.push(in); 46 vis[nx][ny][in.sec%k] = 1; 47 } 48 } 49 } 50 } 51 cout<<"Please give me another chance!"<<endl; 52 } 53 54 int main() 55 { 56 cin >> T; 57 while(T--) 58 { 59 scanf("%d%d%d", &r, &c, &k); 60 for(int i = 0; i < r; i++) 61 { 62 getchar(); 63 for(int j = 0; j < c; j++) 64 { 65 scanf("%c", &m[i][j]); 66 if(m[i][j] == ‘Y‘) 67 { 68 sx = i; 69 sy = j; 70 } 71 if(m[i][j] == ‘G‘) 72 { 73 ex = i; 74 ey = j; 75 } 76 } 77 } 78 memset(vis, 0, sizeof(vis)); 79 bfs(); 80 } 81 82 return 0; 83 }
参考:http://blog.csdn.net/mengxiang000000/article/details/51066586
标签:
原文地址:http://www.cnblogs.com/Penn000/p/5738202.html