博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 2579.Dating with girls(2)
阅读量:4313 次
发布时间:2019-06-06

本文共 3069 字,大约阅读时间需要 10 分钟。

Dating with girls(2)
Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u
Submit

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
 
由于在不同时间,墙有存在和不存在两种情况。
因此,在判重时,也要考虑到时间。只需考虑time%k即可
 
其他部分就是正常的BFS问题
 
1 /*  2 By:OhYee  3 Github:OhYee  4 Email:oyohyee@oyohyee.com  5 Blog:http://www.cnblogs.com/ohyee/  6   7 かしこいかわいい?  8 エリーチカ!  9 要写出来Хорошо的代码哦~ 10 */ 11  12 #include 
13 #include
14 #include
15 #include
16 #include
17 #include
18 #include
19 #include
20 #include
21 #include
22 #include
23 using namespace std; 24 25 //DEBUG MODE 26 #define debug 0 27 28 //循环 29 #define REP(n) for(int o=0;o
Q; 52 53 Q.push(point(s1,s2,0)); 54 dis[s1][s2][0] = 0; 55 while(!Q.empty()) { 56 int x = Q.front().x; 57 int y = Q.front().y; 58 int dist = Q.front().dis; 59 Q.pop(); 60 61 REP(4) { 62 int xx = x + delta[o]; 63 int yy = y + delta[3 - o]; 64 if(xx < 0 || xx >= n || yy < 0 || yy >= m) 65 continue; 66 if(Map[xx][yy] != '#' || (Map[xx][yy] == '#' && (dist+1) % k == 0)) { 67 int dd = dist + 1; 68 if(dis[xx][yy][dd%k] == -1) { 69 dis[xx][yy][dd%k] = dd; 70 if(xx == v1 && yy == v2) 71 return dd; 72 Q.push(point(xx,yy,dd)); 73 74 } 75 } 76 } 77 } 78 return -1; 79 } 80 81 void Do() { 82 scanf("%d%d%d",&n,&m,&k); 83 int s1,s2,v1,v2; 84 for(int i = 0;i < n;i++) 85 for(int j = 0;j < m;j++) { 86 scanf("\n%c\n",&Map[i][j]); 87 if(Map[i][j] == 'Y') { 88 s1 = i; 89 s2 = j; 90 } 91 if(Map[i][j] == 'G') { 92 v1 = i; 93 v2 = j; 94 } 95 } 96 int ans = BFS(s1,s2,v1,v2); 97 if(ans == -1) 98 printf("Please give me another chance!\n"); 99 else100 printf("%d\n",ans);101 }102 103 int main() {104 int T;105 scanf("%d",&T);106 while(T--)107 Do();108 return 0;109 }

 

 

转载于:https://www.cnblogs.com/ohyee/p/5416826.html

你可能感兴趣的文章
注册用户
查看>>
TZC Intercommunication System
查看>>
HDU 4571 SPFA+DP
查看>>
centos 创建以日期为名的文件夹
查看>>
Java Timer触发定时器
查看>>
Page Object设计模式
查看>>
程序的基础知识
查看>>
在VIM中使用GDB调试 – 使用vimgdb
查看>>
python爬虫---从零开始(五)pyQuery库
查看>>
POJ2236(KB5-A)
查看>>
Centos MySQL数据库迁移详细步骤
查看>>
2初出茅庐--初级篇2.1
查看>>
新建 WinCE7.0 下的 Silverlight 工程
查看>>
腾讯的张小龙是一个怎样的人?
查看>>
jxl写入excel实现数据导出功能
查看>>
linux文件目录类命令|--cp指令
查看>>
.net MVC 404错误解决方法
查看>>
linux系统目录结构
查看>>
git
查看>>
btn按钮之间事件相互调用
查看>>