poj1724【最短路】
来源:互联网 发布:淘宝抠图出来衣服 编辑:程序博客网 时间:2024/05/22 16:51
题意:
给出n个城市,然后给出m条单向路,给出了每条路的距离和花费,问一个人有k coins,在不超过money的情况下从1到n最短路径路径。
思路:
我相信很多人在上面那道题的影响下,肯定会想想,在保证最短路的前提下维护下最小花费?还是保证最小花费下维护一个最短路?这样两个想法的bug都非常明显啊。第一个,那是大错特错了,人家首要给你的条件满足<=k,你还抱住最短路长度不放,给你wa是同情。第二个,有个bug就是他是最小花费,可能存在一条路的花费大于最小花费但是他的路长度才是最短路,给你wa也不冤啊。
//#include <bits/stdc++.h>#include<iostream>#include<cstdio>#include<string.h>#include<math.h>#include<queue>#include<algorithm>using namespace std;typedef long long LL;typedef unsigned long long ULL;const double eps=1e-6;const double pi=acos(-1.0);const int mod=998244353;const int INF=0x3f3f3f3f;const int N=1e2+10;struct asd{ int to; int w; int c; int next;};asd q[N*N*2];int tol,head[N*N*2];bool vis[N];int used[N];int n,k;void add(int a,int b,int c,int d){ q[tol].to=b; q[tol].w=c; q[tol].c=d; q[tol].next=head[a]; head[a]=tol++;}struct node{ int id,dis,time; friend bool operator<(node a,node b) { if(a.dis==b.dis) return a.time>b.time; return a.dis>b.dis; }};int spfa(int s,int t){ priority_queue<node>e; node u; u.id=s; u.dis=u.time=0; e.push(u); while(!e.empty()) { u=e.top(); e.pop(); if(u.id==n){ return u.dis; } for(int i=head[u.id];i!=-1;i=q[i].next) { node v; v.id=q[i].to; if(u.time+q[i].c<=k){ v.dis=u.dis+q[i].w; v.time=u.time+q[i].c; e.push(v); } } } return -1;}int main(){ int m; cin>>k; cin>>n; cin>>m; tol=0; memset(head,-1,sizeof(head)); for(int i=0;i<m;i++){ int a,b,c,d; scanf("%d%d%d%d",&a,&b,&c,&d); add(a,b,c,d); } int ans=spfa(1,n); printf("%d\n",ans); return 0;}
0 0
- poj1724【最短路】
- POJ1724最短路
- POJ1724 ROADS最短路问题
- 【POJ1724】ROADS 某邪恶最短路
- poj1724--ROADS(最短路变形)
- poj1724(带限制的最短路)
- POJ1724 ROADS 解题报告【最短路/SPFA】
- POJ1724 ROADS(加限制条件的最短路,深搜)
- POJ1724 ROADS [最短路变形 二维dp+spfa]
- POJ1724 价格合适的最短路(广搜BFS)
- POJ1724 ROADS(深搜DFS,最短路,dijkstra,用优先队列优化)
- POJ1724---ROADS (最短路变形(邻接表+优先队列))
- poj1724
- poj1724
- poj1724
- poj1724
- POJ1724
- POJ1724
- apply, call, bind在js中的区别
- [软件人生]关于公积金的用途
- Spring AOP的底层实现技术---JDK动态代理
- Servlet中请求转发forward与重定向sendRedirect
- 控制TextView滚动
- poj1724【最短路】
- java设计模式——装饰模式
- linux 入门教程(一)之linux目录结构
- I - the Sum of Cube
- 挑7
- 【杭电】素数判定
- 彻底详解Spark RDD 的的秘密花园(1)
- 对两个字符a和b进行初始化:char a[]="ABCDEF";char b[]={'A','B','C','D','E','F'};则以下叙述正确的是:
- POJ 2366 Sacrament of the sum