标签:
1 6 6 2 ...Y.. ...#.. .#.... ...#.. ...#.. ..#G#.
7直接取模判断#include <cstdio> #include <cstring> #include <algorithm> #include <cmath> #include <queue> using namespace std; typedef long long LL; const int MAXN = 100 + 5; char Fig[MAXN][MAXN]; bool vis[MAXN][MAXN][15]; int dx[] = {1,0,-1,0}; int dy[] = {0,1,0,-1}; int r, c, k; int MinTime; struct point { int x, y, time; point(int x,int y, int time):x(x), y(y), time(time) {} }; void BFS(int x,int y) { queue<point>que; que.push(point(x, y, 0)); while(! que.empty()) { point e = que.front(); que.pop(); if(vis[e.x][e.y][e.time % k] || e.x < 0 || e.y < 0 || e.x >= r || e.y >= c) continue; if(Fig[e.x][e.y] == '#') { if(e.time % k != 0) continue; } vis[e.x][e.y][e.time % k] = true; if(Fig[e.x][e.y] == 'G') { MinTime = e.time; return; } for(int i = 0; i < 4; i ++) { int nx = e.x + dx[i]; int ny = e.y + dy[i]; que.push(point(nx, ny, e.time + 1)); } } } void solve(int x,int y) { memset(vis, false,sizeof(vis)); MinTime = -1; BFS(x, y); if(MinTime == -1) { printf("Please give me another chance!\n"); } else { printf("%d\n",MinTime); } } int main() { int T,ix,iy; scanf("%d", &T); while(T --) { scanf("%d%d%d", &r, &c, &k); for(int i = 0; i < r; i ++) { scanf("%s", Fig[i]); for(int j = 0; j < c; j ++) { if(Fig[i][j] == 'Y') { ix = i; iy = j; } } } solve(ix,iy); } }
版权声明:本文为博主原创文章,未经博主允许不得转载。
HDU 2579 Dating with girls(2) (BFS)
标签:
原文地址:http://blog.csdn.net/qq_18661257/article/details/47819799