Code:

  1. #include <queue>
  2. #include <cstdio>
  3. #include <cstring>
  4. #include <algorithm>
  5. #define N 400005
  6. #define ll long long
  7. #define setIO(s) freopen(s".in","r",stdin)
  8. using namespace std;
  9. ll d[N];
  10. int n,edges;
  11. int hd[N],to[N<<1],nex[N<<1],val[N<<1],done[N];
  12. void addedge(int u,int v,int c)
  13. {
  14. nex[++edges]=hd[u],hd[u]=edges,to[edges]=v,val[edges]=c;
  15. swap(u,v);
  16. nex[++edges]=hd[u],hd[u]=edges,to[edges]=v,val[edges]=c;
  17. }
  18. struct Point
  19. {
  20. int x,y,id;
  21. }e[N];
  22. bool cmpx(Point a,Point b)
  23. {
  24. return a.x<b.x;
  25. }
  26. bool cmpy(Point a,Point b)
  27. {
  28. return a.y<b.y;
  29. }
  30. struct Node
  31. {
  32. int u;
  33. ll dis;
  34. Node(int u=0,ll dis=0):u(u),dis(dis){}
  35. bool operator<(Node b) const
  36. {
  37. return b.dis<dis;
  38. }
  39. };
  40. priority_queue<Node>q;
  41. void Dijkstra()
  42. {
  43. int s=1;
  44. memset(d,0x3f,sizeof(d));
  45. for(d[s]=0,q.push(Node(s,0));!q.empty();)
  46. {
  47. Node e=q.top(); q.pop();
  48. int u=e.u,i,v;
  49. if(done[u]) continue;
  50. done[u]=1;
  51. for(i=hd[u];i;i=nex[i])
  52. {
  53. v=to[i];
  54. if(d[v]>d[u]+val[i])
  55. {
  56. d[v]=d[u]+val[i];
  57. q.push(Node(v,d[v]));
  58. }
  59. }
  60. }
  61. }
  62. int main()
  63. {
  64. int i,j,k;
  65. // setIO("input");
  66. scanf("%d",&n);
  67. for(i=1;i<=n;++i)
  68. {
  69. int x,y;
  70. scanf("%d%d",&e[i].x,&e[i].y), e[i].id=i;
  71. }
  72. sort(e+1,e+1+n,cmpx);
  73. for(i=2;i<=n;++i)
  74. addedge(e[i-1].id,e[i].id,e[i].x-e[i-1].x);
  75. sort(e+1,e+1+n,cmpy);
  76. for(i=2;i<=n;++i)
  77. {
  78. addedge(e[i-1].id,e[i].id,e[i].y-e[i-1].y);
  79. }
  80. Dijkstra();
  81. printf("%lld\n",d[n]);
  82. return 0;
  83. }

  

BZOJ 4152: [AMPPZ2014]The Captain Dijkstra+贪心的更多相关文章

  1. bzoj 4152[AMPPZ2014]The Captain

    bzoj 4152[AMPPZ2014]The Captain 给定平面上的n个点,定义(x1,y1)到(x2,y2)的费用为min(|x1-x2|,|y1-y2|),求从1号点走到n号点的最小费用. ...

  2. 循环队列+堆优化dijkstra最短路 BZOJ 4152: [AMPPZ2014]The Captain

    循环队列基础知识 1.循环队列需要几个参数来确定 循环队列需要2个参数,front和rear 2.循环队列各个参数的含义 (1)队列初始化时,front和rear值都为零: (2)当队列不为空时,fr ...

  3. BZOJ 4152: [AMPPZ2014]The Captain( 最短路 )

    先按x排序, 然后只有相邻节点的边才有用, 我们连起来, 再按y排序做相同操作...然后就dijkstra ---------------------------------------------- ...

  4. 【BZOJ】4152: [AMPPZ2014]The Captain【SLF优化Spfa】

    4152: [AMPPZ2014]The Captain Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 2107  Solved: 820[Submi ...

  5. 4152: [AMPPZ2014]The Captain

    4152: [AMPPZ2014]The Captain Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 1561  Solved: 620[Submi ...

  6. BZOJ4152The Captain[DIjkstra]

    4152: [AMPPZ2014]The Captain Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 700  Solved: 266[Submit ...

  7. bzoj4152[AMPPZ2014]The Captain 最短路

    4152: [AMPPZ2014]The Captain Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 1517  Solved: 603[Submi ...

  8. BZOJ4152 AMPPZ2014 The Captain 【最短路】【贪心】*

    BZOJ4152 AMPPZ2014 The Captain Description 给定平面上的n个点,定义(x1,y1)到(x2,y2)的费用为min(|x1-x2|,|y1-y2|),求从1号点 ...

  9. 【BZOJ4152】[AMPPZ2014]The Captain 最短路

    [BZOJ4152][AMPPZ2014]The Captain Description 给定平面上的n个点,定义(x1,y1)到(x2,y2)的费用为min(|x1-x2|,|y1-y2|),求从1 ...

随机推荐

  1. 小白学PYTHON时最容易犯的6个错误

    最近又在跟之前的同学一起学习python,一起进步,发现很多测试同学在初学python的时候很容易犯一些错误,特意总结了一下.其实这些错误不仅是在学python时会碰到,在学习其他语言的时候也同样会碰 ...

  2. javascript获取当前用户访问的宽带IP地址

    javascript获取当前用户访问的宽带IP地址 <script src="http://pv.sohu.com/cityjson?ie=utf-8"></sc ...

  3. SpringBoot热启动让开发更便捷

    在开发过程中,当写完一个功能我们需要运行应用程序测试,可能这个小功能中存在多个小bug,我们需要改正后重启服务器,这无形之中拖慢了开发的速度增加了开发时间,SpringBoot提供了spring-bo ...

  4. docker 入门1 - 方向 【翻译】

    开始,第 1 部分:方向和设置 欢迎!我们很高兴您想学习 Docker.Docker 入门教程将教您如何: 设置 Docker 环境(当前步骤) 生成映像并将其作为一个容器运行 缩放应用以运行多个容器 ...

  5. 作业13:Map相关知识点(一)

    一 Map相关类图 二 Map接口 1 Map接口中的方法 jdk 方法名 简单描述 put(K,V):V 添加value,当Key对应无值,返回null;有值则返回上一个值.(覆盖式,可以反复覆盖前 ...

  6. git merge 命令的使用

    我们把dev分支的工作成果合并到master分支上: $ git merge dev Updating d46f35e..b17d20e Fast-forward readme.txt | 1 + 1 ...

  7. 在QT中添加LIB的方法

    注意:-L后面跟着的目录不能用空格,否则会出现读不到的情况. 例如win32下添加D:\app\my.lib   就 pro文件中 LIBS += -LD:\app\debug\ -lmy

  8. 今日js心得

    <input type="hidden" id="history_chart_json" data-json="#{smartDeviceMon ...

  9. 第一章、接口规范之web-api接口

    1.什么是Web API接口 通过网络,规定了前后台信息交互规则的url链接,也就是前后台信息交互的媒介 Web API接口和一般的url链接还是有区别的,Web API接口简单概括有下面四大特点 u ...

  10. linux 使用 rz 上传和 sz下载 命令

    linux系统 root权限 lrzsz安装包 ①.在线安装-执行命令 yum install lrzsz  离线安装-需要提前准备好安装包 编译安装 root 账号登陆后,依次执行以下命令: tar ...