POJ1724---ROADS (最短路变形(邻接表+优先队列))
来源:互联网 发布:qq三国70js一套小鬼神 编辑:程序博客网 时间:2024/05/17 08:21
【题目来源】:https://vjudge.net/problem/POJ-1724
【题意】
给出旅游经费k,每一条路都要花去一定的经费,在保证能够从点1到点n的情况下,求最短路。
【思路】
这是我的最短路专题里最后一道题了。总体感觉这几天做的还行,学到了不少东西。有苦有乐。
第一次这么在最短路里用优先队列,然后,恍然大悟还可以这么写。
这道题前提保证能够到达n点,并且还要是最短路,那么就维护两个最小值,一个是距离,在队列里从前往后层递增趋势,其次,如果距离一样,那么按照花费排序,花费小的优先,那么每次都用最小的去更新,就可以得出正确答案了。
【代码】
#include<cmath>#include<queue>#include<cstdio>#include<cstring>#include<algorithm>#define INF 0x3f3f3f3fusing namespace std;int k,n,m;struct pp{ int v,w; int nexx,val;}edge[10000+10];int first[103];struct num{ int dis,cost,x; bool operator<(const num &a)const { if(dis!=a.dis) { return dis>a.dis; } return cost>a.cost; }};void spfa(){ priority_queue<num> q; num q1,q2; q1.dis=q1.cost=0; q1.x=1; q.push(q1); while(!q.empty()) { q2=q.top(); q.pop(); if(q2.x==n) { printf("%d\n",q2.dis); return; } for(int i=first[q2.x];i!=-1;i=edge[i].nexx) { if(q2.cost+edge[i].val<=k) { q1.x=edge[i].v; q1.dis=q2.dis+edge[i].w; q1.cost=q2.cost+edge[i].val; q.push(q1); } } }}int main(){ scanf("%d",&k); scanf("%d",&n); scanf("%d",&m); for(int i=1;i<=n;i++) first[i]=-1; for(int i=1;i<=m;i++) { int u,v,w,val; scanf("%d%d%d%d",&u,&v,&w,&val); edge[i].nexx=first[u]; first[u]=i; edge[i].v=v; edge[i].w=w; edge[i].val=val; } flag=0; spfa();}
阅读全文
0 0
- POJ1724---ROADS (最短路变形(邻接表+优先队列))
- poj1724--ROADS(最短路变形)
- Dijkstra变形+优先队列+邻接表(好题)-在长度上加上费用因素--poj1724
- POJ 1724 ROADS 最短路 邻接表 + bfs +优先队列
- POJ1724 ROADS(深搜DFS,最短路,dijkstra,用优先队列优化)
- POJ1724 ROADS [最短路变形 二维dp+spfa]
- POJ1724 ROADS(加限制条件的最短路,深搜)
- 最短路-邻接表(优先队列)写
- POJ 1724ROADS(费用最短路:优先队列+BFS)
- 【poj 1724】 ROADS 最短路(dijkstra+优先队列)
- POJ1724 ROADS最短路问题
- POJ-1724-ROADS(优先队列,邻接表,BFS)
- poj-ROADS(最短路变形)
- HDU 2544 最短路 静态邻接表+优先队列 dijkstra
- hdu 2544 最短路(Dijkstra 邻接表+优先队列)
- 【POJ1724】ROADS 某邪恶最短路
- POJ1724 ROADS 解题报告【最短路/SPFA】
- Lightoj1002——Country Roads(最短路变形)
- ClassLoader的工作机制和概念
- 手机页面,点击电话号码进入拨号界面
- re_正则
- Swift和OC的混编(一)
- Lua学习笔记之Expressions
- POJ1724---ROADS (最短路变形(邻接表+优先队列))
- Android设置某个窗口常亮和最大亮度
- MySQL集群搭建详解
- 英文论文中i.e.,e.g.,etc.的正确用法
- Twitter的分布式自增ID算法snowflake(有改动Java版)
- 省队集训Round3 DAY2
- Java EE 配置Tomcat
- Android 利用 <activity-alias> 动态改变 App 桌面图标
- POJ1201 Intervals