题意:

给出n个城市,然后给出m条单向路,给出了每条路的距离和花费,问一个人有k coins,在不超过money的情况下从1到n最短路径路径。

思路:

我相信很多人在上面那道题的影响下,肯定会想想,在保证最短路的前提下维护下最小花费?还是保证最小花费下维护一个最短路?这样两个想法的bug都非常明显啊。第一个,那是大错特错了,人家首要给你的条件满足<=k,你还抱住最短路长度不放,给你wa是同情。第二个,有个bug就是他是最小花费,可能存在一条路的花费大于最小花费但是他的路长度才是最短路,给你wa也不冤啊。

  1. //#include <bits/stdc++.h>
  2. #include<iostream>
  3. #include<cstdio>
  4. #include<string.h>
  5. #include<math.h>
  6. #include<queue>
  7. #include<algorithm>
  8. using namespace std;
  9. typedef long long LL;
  10. typedef unsigned long long ULL;
  11. const double eps=1e-6;
  12. const double pi=acos(-1.0);
  13. const int mod=998244353;
  14. const int INF=0x3f3f3f3f;
  15. const int N=1e2+10;
  16. struct asd{
  17. int to;
  18. int w;
  19. int c;
  20. int next;
  21. };
  22. asd q[N*N*2];
  23. int tol,head[N*N*2];
  24. bool vis[N];
  25. int used[N];
  26. int n,k;
  27. void add(int a,int b,int c,int d)
  28. {
  29. q[tol].to=b;
  30. q[tol].w=c;
  31. q[tol].c=d;
  32. q[tol].next=head[a];
  33. head[a]=tol++;
  34. }
  35. struct node{
  36. int id,dis,time;
  37. friend bool operator<(node a,node b)
  38. {
  39. if(a.dis==b.dis)
  40. return a.time>b.time;
  41. return a.dis>b.dis;
  42. }
  43. };
  44. int spfa(int s,int t)
  45. {
  46. priority_queue<node>e;
  47. node u;
  48. u.id=s;
  49. u.dis=u.time=0;
  50. e.push(u);
  51. while(!e.empty())
  52. {
  53. u=e.top();
  54. e.pop();
  55. if(u.id==n){
  56. return u.dis;
  57. }
  58. for(int i=head[u.id];i!=-1;i=q[i].next)
  59. {
  60. node v;
  61. v.id=q[i].to;
  62. if(u.time+q[i].c<=k){
  63. v.dis=u.dis+q[i].w;
  64. v.time=u.time+q[i].c;
  65. e.push(v);
  66. }
  67. }
  68. }
  69. return -1;
  70. }
  71. int main()
  72. {
  73. int m;
  74. cin>>k;
  75. cin>>n;
  76. cin>>m;
  77. tol=0;
  78. memset(head,-1,sizeof(head));
  79. for(int i=0;i<m;i++){
  80. int a,b,c,d;
  81. scanf("%d%d%d%d",&a,&b,&c,&d);
  82. add(a,b,c,d);
  83. }
  84. int ans=spfa(1,n);
  85. printf("%d\n",ans);
  86. return 0;
  87. }

poj1724【最短路】的更多相关文章

  1. 有限制的最短路spfa+优先队列

    poj1724 ROADS Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10751   Accepted: 3952 De ...

  2. bzoj1001--最大流转最短路

    http://www.lydsy.com/JudgeOnline/problem.php?id=1001 思路:这应该算是经典的最大流求最小割吧.不过题目中n,m<=1000,用最大流会TLE, ...

  3. 【USACO 3.2】Sweet Butter(最短路)

    题意 一个联通图里给定若干个点,求他们到某点距离之和的最小值. 题解 枚举到的某点,然后优先队列优化的dijkstra求最短路,把给定的点到其的最短路加起来,更新最小值.复杂度是\(O(NElogE) ...

  4. Sicily 1031: Campus (最短路)

    这是一道典型的最短路问题,直接用Dijkstra算法便可求解,主要是需要考虑输入的点是不是在已给出的地图中,具体看代码 #include<bits/stdc++.h> #define MA ...

  5. 最短路(Floyd)

    关于最短的先记下了 Floyd算法: 1.比较精简准确的关于Floyd思想的表达:从任意节点A到任意节点B的最短路径不外乎2种可能,1是直接从A到B,2是从A经过若干个节点X到B.所以,我们假设maz ...

  6. bzoj1266最短路+最小割

    本来写了spfa wa了 看到网上有人写Floyd过了 表示不开心 ̄へ ̄ 改成Floyd试试... 还是wa ヾ(。`Д´。)原来是建图错了(样例怎么过的) 结果T了 于是把Floyd改回spfa 还 ...

  7. HDU2433 BFS最短路

    Travel Time Limit: 10000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Sub ...

  8. 最短路(代码来源于kuangbin和百度)

    最短路 最短路有多种算法,常见的有一下几种:Dijstra.Floyd.Bellman-Ford,其中Dijstra和Bellman-Ford还有优化:Dijstra可以用优先队列(或者堆)优化,Be ...

  9. Javascript优化细节:短路表达式

    什么是短路表达式? 短路表达式:作为"&&"和"||"操作符的操作数表达式,这些表达式在进行求值时,只要最终的结果已经可以确定是真或假,求值过程 ...

随机推荐

  1. 高仿微信实现左滑显示删除button功能

    在实际项目中删除列表中的某一项是很常见的功能.传统的做法能够使用长按监听器等,而如今流行的做法是左滑弹出删除button,微信,QQ等都是这么做的,以下做一个演示样例,代码例如以下: 主页面MainA ...

  2. IntelliTrace窗口无法弹出的解决办法

    最近在使用EF框架,所以需要IntelliTrace窗口进行对ADO的SQL生成监控.可找了半天都无法Call出该窗口. 在Debug模式下,选择调试->窗口 里面根本没有IntelliTrac ...

  3. 【转载】.NET Remoting学习笔记(一)概念

    目录 .NET Remoting学习笔记(一)概念 .NET Remoting学习笔记(二)激活方式 .NET Remoting学习笔记(三)信道 背景 自接触编程以来,一直听过这个名词Remotin ...

  4. 【转载】Http协议与TCP协议简单理解后续

    写了这么长时间的代码,发现自己对TCP/IP了解的并不是很透彻.虽然会用C#的HttpClient类来进行网络编程,也可以使用Chrome的开发者工具来检测每一次的HTTP请求的报文头与报文体,也知道 ...

  5. 处理页面载入图片js(等比例压缩图片)

    第一页面html  <div class="admin">${answer.content}</div> <div class="admin ...

  6. 加载和执行 --《高性能JavaScript》

    1.起因: 每次遇到<script> 标签时,页面必须停下来等待代码下载并执行完,然后再继续处理其他部分. 2.减少JavaScript对性能的影响 1.将所有的JavaScript文件放 ...

  7. (转)gcc学习笔记

    1.gcc -Wall hello.c -o hello //编译源文件,显示警告信息 2../a.out   //运行程序 3.gcc -Wall calc.c /usr/lib/libm.a -o ...

  8. 转载:用python爬虫抓站的一些技巧总结

    原文链接:http://www.pythonclub.org/python-network-application/observer-spider 原文的名称虽然用了<用python爬虫抓站的一 ...

  9. NameNode备份策略以及恢复方法

    一.dits和fsimage      首先要提到两个文件edits和fsimage,下面来说说他们是做什么的. 集群中的名称节点(NameNode)会把文件系统的变化以追加保存到日志文件edits中 ...

  10. QT实现FTP服务器(二)

    QClientThread类的实现: #include "QClientThread.h" #include <QDebug> /******************* ...