HDU2612,简单广搜题
来源:互联网 发布:linux df命令显示详解 编辑:程序博客网 时间:2024/06/04 18:29
这道题目真心蛋疼= =,看完题目,立马用双向广搜写了一发,交上去之后超时= =;后来想想,换个角度,枚举每个@,然后取最小总时间,尼玛还超时,代码实在改不动了,就去看了题解。
呵呵吧,贴上题解
#include<cstdio>#include<iostream>#include<cstdlib>#include<cstring>#include<queue>using namespace std;struct node{ int x,y,step;};//记录点的坐标以及到该点的时间int n,m;char ch[209][209];int dir[4][2] = {0,-1,-1,0,0,1,1,0};int vis[209][209],num[209][209];//vis标记数组,num记录到@的总时间bool is_ok(node a)//判断是否越界{ return a.x >= 0 && a.x < n && a.y >= 0 && a.y < m;}void bfs(int x,int y){ node s,t,ne; int i; s.x = x; s.y = y; s.step = 0; queue<node>q; while (!q.empty()) q.pop(); vis[x][y] = 1; q.push(s); while (!q.empty()) { t = q.front(); q.pop(); for (i = 0; i < 4; ++i) { ne.x = t.x + dir[i][0]; ne.y = t.y + dir[i][1]; ne.step = t.step + 1; if (is_ok(ne) && ch[ne.x][ne.y] != '#' && !vis[ne.x][ne.y]) //Y,M,和@都可以走 { vis[ne.x][ne.y] = 1; q.push(ne); if (ch[ne.x][ne.y] == '@') { num[ne.x][ne.y] += ne.step;//这里是+=,不是=,因为这点是@,记录的是两人到这的总时间 } } } }}int main(){ int yx,yy,mx,my,i,j; while (~scanf("%d%d",&n,&m)) { for (i = 0; i < n; ++i) { getchar(); for (j = 0; j < m; ++j) { scanf("%c",&ch[i][j]); if (ch[i][j] == 'Y') { yx = i; yy = j; } else if (ch[i][j] == 'M') { mx = i; my = j; } } } memset(vis,0,sizeof(vis)); memset(num,0,sizeof(num)); bfs(yx,yy); memset(vis,0,sizeof(vis)); bfs(mx,my); int ans = 9999999; for (i = 0; i < n; ++i)//找最小总时间 { for (j = 0; j < m; ++j) { if (num[i][j] != 0 && ans > num[i][j]) ans = num[i][j]; } } printf("%d\n",ans*11); } return 0;}
0 0
- HDU2612,简单广搜题
- hdu2612简单BFS
- hdu2612 简单两次广搜
- hdu2612
- hdu2612
- hdu2612
- (hdu2612)
- hdu2612
- hdu2612 bfs
- [kuangbin带你飞]专题一 简单搜索 N - Find a way HDU2612
- Find a way hdu2612
- HDU2612---Find a way
- HDU2612---(两次BFS)
- hdu2612---Find a way
- hdu2612 两遍BFS
- HDU2612 Find a way
- Hdu2612 Find a way
- HDU2612 Find a way
- dubbox简单监控
- 用javascript获取屏幕高度和宽度等信息
- Windows 7 系统下载安装的所有方法
- TCP/IP学习笔记(3)--ARP和RARP协议
- 归并排序及求逆序对
- HDU2612,简单广搜题
- 每天一个小知识点10(jQuerMobile总结一)
- 设计模式笔记——策略模式VS简单工厂模式
- 再识vb.net反射机制
- Java各种Synchronizer: CountDownLatch, CyclicBarrier,Semaphore
- 黑马程序员——第二篇_多线程
- 第二周第三天([输入一个字符串,然后输出字符串的运算结果] [object][异常][IO流,读取D盘某个文件])
- poj1276结题报告
- 鱼眼图像校正算法(基于几何模型)(2D)