博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj1111
阅读量:6157 次
发布时间:2019-06-21

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

bfs

View Code
#include 
#include
#include
#include
#include
using namespace std;#define maxn 30struct Point{ int x, y;} s;int n, m;int dir[8][2] ={{ 1, 0 },{ 0, 1 },{ -1, 0 },{ 0, -1 },{ 1, 1 },{ -1, 1 },{ 1, -1 },{ -1, -1 } };char map[maxn][maxn];bool vis[maxn][maxn];void input(){ for (int i = 0; i < n; i++) scanf("%s", map[i]);}bool in_map(Point &a){ return a.x >= 0 && a.y >= 0 && a.x < n && a.y < m;}int cal(Point &a){ int ret = 0; for (int i = 0; i < 4; i++) { Point b = a; b.x += dir[i][0]; b.y += dir[i][1]; if (!in_map(b) || map[b.x][b.y] == '.') ret++; } return ret;}int bfs(){ memset(vis, 0, sizeof(vis)); queue
q; q.push(s); vis[s.x][s.y] = true; int ans = cal(s); while (!q.empty()) { Point a = q.front(); q.pop(); for (int i = 0; i < 8; i++) { Point b = a; b.x += dir[i][0]; b.y += dir[i][1]; if (in_map(b) && map[b.x][b.y] == 'X' && !vis[b.x][b.y]) { q.push(b); ans += cal(b); vis[b.x][b.y] = true; } } } return ans;}int main(){// freopen("t.txt", "r", stdin); while (scanf("%d%d%d%d", &n, &m, &s.x, &s.y), n | m | s.x | s.y) { s.x--; s.y--; input(); printf("%d\n", bfs()); } return 0;}

 

转载地址:http://dksfa.baihongyu.com/

你可能感兴趣的文章
jqgrid滚动条宽度/列显示不全问题
查看>>
在mac OS10.10下安装 cocoapods遇到的一些问题
查看>>
css技巧
查看>>
Tyvj 1728 普通平衡树
查看>>
javascript性能优化
查看>>
多路归并排序之败者树
查看>>
java连接MySql数据库
查看>>
转:Vue keep-alive实践总结
查看>>
深入python的set和dict
查看>>
Android JSON数据解析
查看>>
DEV实现日期时间效果
查看>>
java注解【转】
查看>>
centos 下安装g++
查看>>
下一步工作分配
查看>>
Response. AppendHeader使用大全及文件下载.net函数使用注意点(转载)
查看>>
Wait Functions
查看>>
jQuery最佳实践
查看>>
centos64i386下apache 403没有权限访问。
查看>>
jquery用法大全
查看>>
PC-BSD 9.2 发布,基于 FreeBSD 9.2
查看>>