hdu 2822 Dogs
2015-06-28 21:09
381 查看
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=2822
bfs+优先队列。。。
走XX不用花时间,走..时间为1
bfs+优先队列。。。
走XX不用花时间,走..时间为1
[code]#include<algorithm> #include<iostream> #include<cstdlib> #include<cstring> #include<cstdio> #include<vector> #include<queue> #include<map> using std::cin; using std::cout; using std::endl; using std::find; using std::sort; using std::map; using std::pair; using std::vector; using std::multimap; using std::priority_queue; #define pb(e) push_back(e) #define sz(c) (int)(c).size() #define mp(a, b) make_pair(a, b) #define all(c) (c).begin(), (c).end() #define iter(c) decltype((c).begin()) #define cls(arr,val) memset(arr,val,sizeof(arr)) #define cpresent(c, e) (find(all(c), (e)) != (c).end()) #define rep(i, n) for (int i = 0; i < (int)(n); i++) #define tr(c, i) for (iter(c) i = (c).begin(); i != (c).end(); ++i) const int N = 1010; typedef unsigned long long ull; const int dx[] = { 0, 0, -1, 1 }, dy[] = { -1, 1, 0, 0 }; bool vis ; char rec ; int m, n, Sx, Sy, Dx, Dy; struct Node { int x, y, s; Node(int i = 0, int j = 0, int k = 0) :x(i), y(j), s(k) {} bool operator<(const Node &a) const { return s > a.s; } }; void bfs() { cls(vis, false); priority_queue<Node> que; que.push(Node(Sx, Sy, 0)); vis[Sx][Sy] = true; while (!que.empty()) { Node tmp = que.top(); que.pop(); if (tmp.x == Dx && tmp.y == Dy) { printf("%d\n", tmp.s); return; } rep(i, 4) { int nx = tmp.x + dx[i], ny = tmp.y + dy[i]; if (nx < 0 || nx >= m || ny < 0 || ny >= n || vis[nx][ny]) continue; if (rec[nx][ny] == 'X') que.push(Node(nx, ny, tmp.s)); else que.push(Node(nx, ny, tmp.s + 1)); vis[nx][ny] = true; } } } int main() { #ifdef LOCAL freopen("in.txt", "r", stdin); freopen("out.txt", "w+", stdout); #endif while (~scanf("%d %d", &m, &n) && m + n) { rep(i, m) scanf("%s", rec[i]); scanf("%d %d %d %d", &Sx, &Sy, &Dx, &Dy); Sx--, Sy--, Dx--, Dy--; bfs(); } return 0; }
相关文章推荐
- [Leetcode]-Reverse Integer
- 《统计学习方法》笔记(四)--k近邻法
- 展讯8810平台:mstar2133_jt_397_2key调试(input子系统)
- 安全测试外包 简单搞定网站安全问题
- 我的迷茫
- 2015062809 - 袁崇焕
- os.fork()
- shell十三问(转)
- ubuntu14.04 编译安装ceph
- Android开发资源列表
- BZOJ1036 树链剖分
- LeetCode-Summary Ranges-解题报告
- 高中数学
- [leetcode] Longest Substring Without Repeating Characters
- [leetcode 111] Minimum Depth of Binary Tree
- ASP.NET MVC 技术债务
- C++ STL内部简单细节整理
- HTTP总结
- 【荐】Grand Central Dispatch Tutorial for Swift: Part 1/2
- 小程序[邮箱提取器-EmailSplider]总结