HDU 2579 Dating with girls(2) (BFS)

Dating with girls(2)

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 2416    Accepted Submission(s): 690

Problem Description

If you have solved the problem Dating with girls(1).I think you can solve this problem too.This problem is also about dating with girls. Now you are in a maze and the girl you want to date with is also in the maze.If you can find the girl, then you can date
with the girl.Else the girl will date with other boys. What a pity!

The Maze is very strange. There are many stones in the maze. The stone will disappear at time t if t is a multiple of k(2<= k <= 10), on the other time , stones will be still there.

There are only ‘.’ or ‘#’, ’Y’, ’G’ on the map of the maze. ’.’ indicates the blank which you can move on, ‘#’ indicates stones. ’Y’ indicates the your location. ‘G’ indicates the girl‘s location . There is only one ‘Y’ and one ‘G’. Every seconds you can move
left, right, up or down.

Input

The first line contain an integer T. Then T cases followed. Each case begins with three integers r and c (1 <= r , c <= 100), and k(2 <=k <= 10).

The next r line is the map’s description.

Output

For each cases, if you can find the girl, output the least time in seconds, else output "Please give me another chance!".

Sample Input

1
6 6 2
...Y..
...#..
.#....
...#..
...#..
..#G#.

Sample Output

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);
    }
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-03 13:39:44

HDU 2579 Dating with girls(2) (BFS)的相关文章

HDU 2579 Dating with girls(2) BFS 余数判重

对于石头的处理就按照每个位置的时间取k的余数判一下重复就好,其他随意写 #include <cstdio> #include <cstring> #include <iostream> #include <map> #include <set> #include <vector> #include <string> #include <queue> #include <deque> #include

hdu 2579 Dating with girls(2)

题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2579 Dating with girls(2) Description If you have solved the problem Dating with girls(1).I think you can solve this problem too.This problem is also about dating with girls. Now you are in a maze and th

hdu 2579 Dating with girls(2) 【经典三维BFS】

Dating with girls(2)                                                           Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2443    Accepted Submission(s): 697 链接:http://acm.hdu.edu.cn/showp

HDU 2578 Dating with girls(1) [补7-26]

Dating with girls(1) Time Limit: 6000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3869    Accepted Submission(s): 1196 Problem Description Everyone in the HDU knows that the number of boys is larger than the

hdu 2578 Dating with girls(1)

题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2578 Dating with girls(1) Description Everyone in the HDU knows that the number of boys is larger than the number of girls. But now, every boy wants to date with pretty girls. The girls like to date with

【HDOJ】2579 Dating with girls(2)

简单BFS. 1 /* 2579 */ 2 #include <iostream> 3 #include <queue> 4 #include <cstdio> 5 #include <cstring> 6 #include <cstdlib> 7 using namespace std; 8 9 #define MAXN 105 10 11 typedef struct node_t { 12 int x, y, t; 13 node_t()

hdu 2579

V - Dating with girls(2) Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Practice HDU 2579 Appoint description:  System Crawler  (2014-11-15) Description If you have solved the problem Dating with girls(1).I

hdu 1312 Red and Black(BFS水题)

Red and Black Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 9684    Accepted Submission(s): 6021 Problem Description There is a rectangular room, covered with square tiles. Each tile is colore

hdu 2102 A计划(双层BFS)(详解)

转载请注明出处:http://blog.csdn.net/u012860063?viewmode=contents 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2102 Problem Description 可怜的公主在一次次被魔王掳走一次次被骑士们救回来之后,而今,不幸的她再一次面临生命的考验.魔王已经发出消息说将在T时刻吃掉公主,因为他听信谣言说吃公主的肉也能长生不老.年迈的国王正是心急如焚,告招天下勇士来拯救公主.不过公主早已习以为常,她