HDU_2757

由于边权只有0和1,可以用稍加变形的BFS,也可以直接用优先级队列,由于后者省事一些,所以就直接用优先级队列来写了,不过当然效率也会低一些。

#include<stdio.h>
#include<string.h>
#include<queue>
#define MAXD 1010
#define INF 0x3f3f3f3f
char b[MAXD];
int N, M, dis[MAXD][MAXD], g[MAXD][MAXD], sx, sy, tx, ty;
int dx[] = {-1, -1, 0, 1, 1, 1, 0, -1}, dy[] = {0, 1, 1, 1, 0, -1, -1, -1};
struct Point
{int x, y, dis;Point(){}Point(int _x, int _y, int _dis) : x(_x), y(_y), dis(_dis){}bool operator < (const Point &t) const{return dis > t.dis;    }
};
void init()
{int i, j;for(i = 1; i <= N; i ++){scanf("%s", b + 1);for(j = 1; j <= M; j ++) g[i][j] = b[j] - '0';    }
}
inline int inside(int x, int y)
{return x >= 1 && x <= N && y >= 1 && y <= M;
}
void dij()
{int i, j, x, y, z;std::priority_queue <Point> q;for(i = 1; i <= N; i ++) for(j = 1; j <= M; j ++) dis[i][j] = INF;dis[sx][sy] = 0;q.push(Point(sx, sy, 0));while(!q.empty()){Point p = q.top();q.pop();if(p.x == tx && p.y == ty) break;for(i = 0; i < 8; i ++){x = p.x + dx[i], y = p.y + dy[i];z = p.dis + 1 - (i == g[p.x][p.y]);if(inside(x, y) && z < dis[x][y])dis[x][y] = z, q.push(Point(x, y, z));}}printf("%d\n", dis[tx][ty]);
}
void solve()
{int i, n;scanf("%d", &n);for(i = 0; i < n; i ++){scanf("%d%d%d%d", &sx, &sy, &tx, &ty);dij();    }
}
int main()
{while(scanf("%d%d", &N, &M) == 2){init();solve();    }return 0;
}

HDU 2757 Ocean Currents相关推荐

  1. [230516] TPO71 | 2022年托福阅读真题第4/36篇 | Electrical Energy from the Ocean | 11:50

    目录 7101 Electrical Energy from the Ocean Paragraph 1 问题1 Paragraph 2 问题2 Paragraph 3 问题3 Paragraph 4 ...

  2. 加勒比海兔_加勒比海海洋物种趋势

    加勒比海兔 Ok, here's a million dollar question: is the Caribbean really dying? Or, more specifically, ar ...

  3. 环境资源与相关词汇中英文对照

    大气 ATMOSPHERE 大气组成 Atmospheric composition 空气质量 Air quality 大气化学 Atmospheric chemistry 大气成分 Atmosphe ...

  4. 用python制作英文字典的分析_分享一个自己做的英文科学写作检查器

    最近在读一本神书,牛津大学出版的<Scientific Writing and Communication>,边阅读边检查书里面说的那些英文科学论文写作中经常出现的很俗的桥段,很多余的短语 ...

  5. 语法入门*算法入门题单

    作者:王清楚 链接:https://ac.nowcoder.com/discuss/817596?type=101&order=0&pos=1&page=4&chann ...

  6. 【新手上路】语法入门算法入门题单

    作者:王清楚 链接:[新手上路]语法入门&算法入门题单_ACM竞赛_ACM/CSP/ICPC/CCPC/比赛经验/题解/资讯_牛客竞赛OJ_牛客网 来源:牛客网 介绍:本题单分为语法入门和算法 ...

  7. 知到/智慧树——英语听说:实境主题与技能(参考答案)

    目录 第一章测试 第二章测试 第三章测试 第四章测试 第五章测试 第六章测试 第七章测试 第八章测试 第九章测试 第十章测试 第一章测试 第1部分 总题数: 10 1 [多选题] (10分) What ...

  8. COCA单词整理(1-1000)

    state /steɪt/ N- COUNT You can refer to countries as states, particularly when you are discussing po ...

  9. WikiText数据集_自然语言处理

    WikiText数据集来自维基百科(Wiki)的词条,经过验证的优质文章内容被收录,总数超过1亿个单词(原词叫token,令牌,就是句子拆分为单词的数量). 与Penn Treebank(PTB)的预 ...

最新文章

  1. LeetCode-滑动窗口-209. 长度最小的子数组
  2. java rabbitmq 绑定_RabbitMQ:交换,队列和绑定 - 谁设置了什么?
  3. 【转】Java开发必须要知道的知识体系
  4. 互联网各岗位的生存指南
  5. 二进制类(运算符号的重载)
  6. 对初级软件开发者的建议(1)
  7. 滴滴开源基于 React 的移动端开发组件库-Pile.js
  8. Verilog初学者小圣经
  9. word的多级符号设置
  10. 数十年从事java工作的经验分享
  11. C# 消息盒子 右下角显示窗体
  12. 如何部署一个属于自己的网站
  13. 大学四年生活总结_2020校园寝室生活必备好物推荐,大学四年,留下点回忆,好不啦...
  14. 求立方根函数cbrt
  15. vue3最简单的在线md编辑器
  16. pycharm新建项目
  17. 分享|2023年全球市场准入认证咨讯
  18. Qt 错误提示1: invalid use of incomplete type ‘***‘
  19. VBA批量OCR识别提取身份证照片信息_白描网页版 - 高效准确且免费的OCR文字识别工具...
  20. 罗马数字转十进制 古罗马帝国开创了辉煌的人类文明,但他们的数字表示法的确有些繁琐,尤其在表示大数的时候, 现在看起来简直不能忍受,所以在现代很少使用了。

热门文章

  1. 连接maven_Maven系列——超简单入门级教程
  2. 从java里调用r jri的设置方法_从Java里调用R – JRI的设置方法
  3. mysql导出数据字典6_MySQL利用Navicat导出数据字典
  4. jdbc mysql 远程数据库_jdbc 连接远程mysql数据库的有关问题
  5. wpf使用入式mysql_使用 WPF 和 MySQL 搭建小型人资管理系统——主要页面
  6. jquery 字符串查找_Python Appium 库IOS特有元素查找API介绍
  7. linux php 依赖,在php5-fpm-alpine docker容器中安装php-gd依赖于alpine linux
  8. mysql 每条记录大小_计算数据库中各个表的数据量和每行记录所占用空间
  9. 数据分析pandas属性实现统计分析
  10. 右手螺旋判断磁感应强度方向_高中物理第11章 电磁感应(汇总58个动画视频)