HDU 3533 BFS
#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <queue>
#include <string.h>
#include <math.h>
using namespace std;
int n,m,k,d;
int map[110][110];
struct castle
{int x,y,v,t;int fx;
}pao[110];bool vis[110][110][1100];
struct node
{int x,y,step;
};
int dir[5][2]={ 1,0, -1,0, 0,1, 0,-1, 0, 0};
void bfs()
{memset(vis,0,sizeof(vis));struct node u,v;u.x=0; u.y=0; u.step=0;vis[0][0][0]=1;queue<node> que ;que.push(u);while(!que.empty()){u=que.front() ; que.pop();if(u.x==n&&u.y==m){if(u.step<=d) printf("%d\n",u.step);else printf("Bad luck!\n");return;}for(int i=0;i<5;++i){int xx=u.x+dir[i][0],yy=u.y+dir[i][1];if(xx<0||yy<0||xx>n||yy>m) continue;if(vis[xx][yy][u.step+1]==1||map[xx][yy]!=-1) continue ;bool flag=1;for(int j=xx+1;j<=n;++j){if(map[j][yy]!=-1){int id = map[j][yy];int much = j-xx;int time= u.step+1-(much/pao[id].v);if(pao[id].fx!=1||much%pao[id].v) break;if(time<0) break;if(time%pao[id].t==0) { flag =0; break;}}}if(flag==0) continue;for(int j=xx-1;j>=0;--j){if(map[j][yy]!=-1){int id = map[j][yy];int much = xx-j;int time= u.step+1-(much/pao[id].v);if(pao[id].fx!=3||much%pao[id].v) break;if(time<0) break;if(time%pao[id].t==0) { flag =0; break;}}}if(flag==0) continue;for(int j=yy+1;j<=m;++j){if(map[xx][j]!=-1){int id = map[xx][j];int much = j-yy;int time= u.step+1-(much/pao[id].v);if(pao[id].fx!=4||much%pao[id].v) break;if(time<0) break;if(time%pao[id].t==0) { flag =0; break;}}}if(flag==0) continue;for(int j=yy-1;j>=0;--j){if(map[xx][j]!=-1){int id = map[xx][j];int much = yy-j;int time= u.step+1-(much/pao[id].v);if(pao[id].fx!=2||much%pao[id].v) break;if(time<0) break;if(time%pao[id].t==0) { flag =0; break;}}}if(flag==0) continue;v.x=xx; v.y=yy; v.step=u.step+1; vis[xx][yy][u.step+1]=1;que.push(v);}}printf("Bad luck!\n");return ;
}
int main()
{while(scanf("%d%d%d%d",&n,&m,&k,&d)!=EOF){char s[5];int t,v,x,y,temp;memset(map,-1,sizeof(map));for(int i=1;i<=k;++i){scanf("%s",s);scanf("%d%d%d%d",&t,&v,&x,&y);if(s[0]=='N') temp = 1;else if(s[0]=='E') temp = 2;else if(s[0]=='S') temp = 3;else temp = 4;pao[i].fx=temp; pao[i].x=x; pao[i].y=y; pao[i].t=t; pao[i].v=v;map[x][y]=i;}bfs();}return 0;
}
HDU 3533 BFS相关推荐
- [kuangbin]专题二 搜索进阶 Escape HDU - 3533【BFS】
[题目描述] The students of the HEU are maneuvering for their military training. The red army and the blu ...
- hdu 5433(bfs+dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5433 解题思路: dp[i][j][k]表示在(x,y)点,毅力为k时的最小体力.由于每个点可能会走多 ...
- hdu 2579 BFS
http://acm.hdu.edu.cn/showproblem.php?pid=2579 题目大意:给定 r * c 的迷宫,还有一个整数 k .迷宫中"."表示可以走,&qu ...
- D - Age of Moyu HDU - 6386 -BFS+DFS分层最短路
D - Age of Moyu HDU - 6386 题意:双向图,m条边,每条边有一个编号id,而花费就是根据这个id的变化来确定的求1-n的最短路 思路:全值为0,1的图直接bfs按层遍历图找到n ...
- hdu 5167 bfs
因为斐波那契数列增长很快(指数级),所以10Y以内只有不到50个斐波那契数,将这些数字所有可能的乘积存起来查询即可,这里采用bfs+set的方式. 1 #include <iostream> ...
- hdu 1026 bfs+记录路径
题意:从0,0点出发到n-1,m-1点,路上的数字代表要在这个点额外待多少秒,求最短的路 递归输出路径即可 1 #include<cstdio> 2 #include<iostrea ...
- hdu 4568 bfs + 状压dp
//这题的数据是不是有问题... 不考虑宝藏一个也拿不到也能AC... 1 #include "bits/stdc++.h" 2 using namespace std; 3 co ...
- hdu 1044 BFS(压缩图)+DFS
题意: 给你起点,终点,图上有墙有路还有宝物,问你在规定时间内能否能到终点,如果能问最多能捡到多少宝物. 思路: 看完这个题目果断 BFS+三维的mark ...
- hdu 1226(bfs+同余剪枝)
超级密码 Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Sub ...
- hdu 5179(bfs打表+二分)
beautiful number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
最新文章
- 和封神一起“深挖”Spark
- FineReport中Domino数据库连接方法
- 运行scrapy保存图片,报错ValueError: Missing scheme in request url: h
- Python中的堆实现:heapq 模块——利用堆结构实现快速访问数据流中的中位数
- [原创] 对于深度学习(deep learning)在工业界的应用现状和突破 [by matthewbai]
- WINDOWS下简单操作SQLITE3
- LiveGBS国标GB/T28181流媒体平台华为IPC设备GB35114配置接入说明
- 《《《翻译》》》avod 三维生成与目标检测
- 缠中说禅:缠非缠、禅非禅,枯木龙吟照大千(整理版)
- 1114 Family Property (25 point(s)) PAT甲级
- 抽象代数之S3的自同构群和S3的内自同构群
- 【Python实用工具】暴力破解-2!Python编写八位数密码本
- 图片秒加水印制作生成威信小程序源码下载
- 六级通关笔记--词汇1
- MEGA UNO固件烧写教程
- codeforces C2. Pokémon Army (hard version)(模拟)
- 新款苹果手机_入手新款苹果手机半个月 他们这样评价新手机
- C/C++超市收银系统
- STM32 Cube ADC 测量土壤湿度
- 利用Python提取视频中的字幕(文字识别)