HDU 1312(BFS)
来源:互联网 发布:上海行知小学怎么样 编辑:程序博客网 时间:2024/04/28 08:52
题意:“.”是red方格,“#”是black方格,“@”是起点。求从起点开始走,可以到达的方格(包括起点),red方格不能走,相当于墙壁。
#include <cstdio>#include <queue>#include <algorithm>using namespace std;char map[25][25];bool visit[25][25];int count;const int direction[4][2] = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};struct Node{ int x, y; Node() {} Node(int _x, int _y) : x(_x), y(_y) {} Node next(int i) { return Node(x+direction[i][0], y+direction[i][1]); } bool visit() { return ::visit[x][y]; } void set() { ++::count; ::visit[x][y] = true; } bool legal() { return map[x][y] != '#'; }};int main(){ int n, m, i, j, x, y; memset(map[0], '#', sizeof map[0]); while (scanf("%d%d", &m, &n) != EOF, n || m) { for (i = 1; i <= n; ++i) scanf("%s", map[i]+1), map[i][0] = map[i][m+1] = '#'; memset(map[n+1], '#', sizeof map[0]); memset(visit, false, sizeof visit); for (i = 1; i <= n; ++i) for (j = 1; j <= m; ++j) if (map[i][j] == '@') { x = i, y = j; } ::count = 0; queue<Node> q; q.push(Node(x, y)); Node(x, y).set(); Node p, n; while (!q.empty()) { p = q.front(); q.pop(); for (i = 0; i < 4; ++i) { n = p.next(i); if (!n.legal()) continue; if (n.visit()) continue; n.set(); q.push(n); } } printf("%d\n", ::count); } return 0;}
0 0
- hdu 1312 bfs
- HDU 1312(BFS)
- hdu 1312简单bfs
- HDU 1312 BFS裸题
- HDU 1312 BFS
- 广度搜索BFS hdu-1312
- hdu 1312 BFS模板题
- HDU bfs
- HDU 1312 广度优先搜索(BFS)
- hdu 1312 red and black BFS
- HDU 1312 Red and Black(BFS,DFS)
- HDU 1312 Red and Black(简单BFS)
- HDU 1312 Red and Black (BFS)
- Hdu 1312 Red and black(BFS)
- hdu 1312 Red and Black(bfs实现)
- hdu 1312 Red and Black (dfs+bfs)
- hdu 1312 BFS DFS搜索入门
- HDU 1312 Red and Black(BFS)
- 向优秀的效率类应用学习--智能日历应用(Cal和Sunrise)
- 2013年自我总结
- Android环境搭建和目录文件介绍
- 部分转载:如何实现C和C++函数互相调用
- WPF经典编程模式-MVVM示例讲解
- HDU 1312(BFS)
- 三款主流云笔记软件比较
- ASP.NET初了解(三)-- 内置对象(2)
- note : SetServiceStatus
- github quercus demo备忘
- SDL游戏之路(十一)--按钮制作
- Hibernate的事务控制
- ubuntu 12.04创建本地源
- 合作开发收费系统——临时表解决用户重复登录问题