• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
For_
博客园    首页    新随笔    联系   管理    订阅  订阅

1728 逃离迷宫 好无语啊好无语

1 #include<cstdio>//只是因为 k,y1,x1,y2,x2的原因。
2  #include<queue>
3 #include<cstring>
4 using namespace std;
5 int m,n,time;
6 int dir[4][2]={{0,1},{1,0},{-1,0},{0,-1}};//右下上左 0,1,2,3
7 char map[110][110];
8 int hash[110][110];
9 struct In
10 {
11 int x,y,k,time;
12 };
13 In s,e;
14 int bfs()
15 {
16 queue<In> q;
17 int i,j;
18 In cur,p;
19
20 s.k = 4;
21 s.time = 0;
22 q.push(s);
23 hash[s.x][s.y] = 0;
24 while( !q.empty())
25 {
26 cur = q.front();
27 q.pop();
28 //printf("%d %d %d %d\n",cur.x, cur.y, cur.k,cur.time);
29 if( cur.x == e.x && cur.y == e.y && cur.time <= time )
30 return 1;
31 if(cur.k != 4)
32 {
33 p.x = cur.x + dir[cur.k][0];
34 p.y = cur.y + dir[cur.k][1];
35 p.k = cur.k;
36 p.time = cur.time;
37 if( p.x >=0 && p.x < m && p.y >=0 && p.y < n && map[p.x][p.y] == '.' && p.time <= time && p.time <= hash[p.x][p.y])
38 {
39 hash[p.x][p.y] = p.time;
40 q.push(p);
41 }
42 }
43 for( i = 0 ; i < 4; i ++ )
44 {
45 if(cur.k != i)
46 {
47 p.x = cur.x + dir[i][0];
48 p.y = cur.y + dir[i][1];
49 p.k = i;
50 if( cur.k == 4)
51 p.time = cur.time;
52 else
53 p.time = cur.time + 1;
54 if( p.x >=0 && p.x < m && p.y >=0 && p.y < n && p.time <= time&& map[p.x][p.y] == '.' && p.time <= hash[p.x][p.y])
55 {
56 hash[p.x][p.y] = p.time;
57 q.push(p);
58 }
59 }
60 }
61 }
62 return 0;
63 }
64 int main()
65 {
66 int i,j,cas;
67 scanf("%d",&cas);
68 while(cas --)
69 {
70 for( i = 0 ; i < 110 ; i ++)
71 for( j= 0 ; j < 110 ; j ++)
72 hash[i][j] = 11;
73 scanf("%d%d",&m,&n);
74 for( i = 0 ; i < m ; i ++ )
75 scanf("%s",map[i]);
76 scanf("%d%d%d%d%d",&time,&s.y,&s.x,&e.y,&e.x);
77 s.x --;
78 s.y --;
79 e.x --;
80 e.y --;
81 if(bfs())
82 printf("yes\n");
83 else
84 printf("no\n");
85 }
86 return 0;
87 }

刚开始注意了 e.x,e.y , 却没看 s.x,s.y, 诶。
posted @ 2011-04-21 16:02  For_  阅读(172)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3