POJ1724 ROADS 费用最短路
//State: POJ1724 Accepted 1188K 32MS C++ 1968B /* *题目大意: * 给定总费用,还有n个城市,m条边,构成的图为单向图,然后 * m条边有费用,还有距离,求从1->n的最小距离,要求走边时 * 费用要小于边的费用。 *解题思路: * 用二维dij即可。 */
#include <queue> #include <iostream> #include <cstdio> #include <cmath> #include <cstring> using namespace std;const int MAXN = 105; const int MAXE = 10005; const int MAX_COST = 10005; const int inf = 0x3f3f3f3f;typedef struct _node {int v, next;int l, c; }N; N edge[MAXE]; int cntEdge, head[MAXN];typedef struct _no {int v;int c, dis;_no(): dis(inf) {}_no(int a, int b, int c1): v(a), dis(b), c(c1) {} friend bool operator < (const struct _no &n1, const struct _no &n2){return n1.dis > n2.dis;} }priN;void init() {cntEdge = 0;for(int i = 0; i < MAXN; i++)head[i] = -1; }void addEdge(int u, int v, int l, int c) {edge[cntEdge].v = v;edge[cntEdge].l = l;edge[cntEdge].c = c;edge[cntEdge].next = head[u];head[u] = cntEdge++; }int dis[MAXN]; int dijkstra(int s, int n, int tol)//1是起点,n是终点 {int vst[MAXN] = {0};for(int i = 0; i <= n; i++)dis[i] = inf;priority_queue<priN> Q;Q.push(priN(s, 0, 0));//dis[s] = 0;while(!Q.empty()){priN pre = Q.top();Q.pop();if(pre.v == n)return pre.dis;for(int f = head[pre.v]; f != -1; f = edge[f].next){int son = edge[f].v;int l = edge[f].l;int c = edge[f].c;if(pre.c + c <= tol){//dis[son] = dis[pre.v] + l;Q.push(priN(son, pre.dis + l, pre.c + c));}}}return -1; }int main(void) { #ifndef ONLINE_JUDGEfreopen("in.txt", "r", stdin); #endifint n, tol;while(scanf("%d", &tol) == 1){int m;scanf("%d %d", &n, &m);init();int u, v, l, c;for(int i = 0; i < m; i++){scanf("%d %d %d %d", &u, &v, &l, &c);addEdge(u, v, l, c);}int sol = dijkstra(1, n, tol);printf("%d\n", sol);}return 0; }
转载于:https://www.cnblogs.com/cchun/archive/2012/09/02/2667588.html
POJ1724 ROADS 费用最短路相关推荐
- POJ 1724 二维费用最短路
题目大意: 有N个城市,编号1-N 有R条路,每条路(单向)的起点为Si,终点为Di,长度为Li,如果要走这条路需要花Ti的钱 现在你只有K元钱,求在不超支的前提下,从1走到N需要的最短距离 这里总是 ...
- 2020牛客多校第1场H-Minimum-cost Flow-最小费用流
https://ac.nowcoder.com/acm/contest/5666/H 题目大意:给出了每一条边的费用,有q个询问,问当每一条边的容量为u/v时,通过1流量的最小费用是多少. 思路:很明 ...
- 服务器维修测试工具,goss 简单快捷的服务器测试检验工具
goss 是一个简单.快捷的服务器测试检验工具,dgoss 是一个包装可以支持基于容器的开发模式 同时可以暴露测试结果为一个http endpoint,比较方便. 使用goss容器运行 使用数据卷的模 ...
- NOIP 好题推荐(DP+搜索+图论)POJ ZOJ
NOIP好题推荐(DP+搜索+图论)POJ ZOJ 1370 Gossiping (数论->模线性方程有无解的判断)+(图论->DFS) 1090 Chain ->格雷码和二进制码 ...
- 黑暗爆炸 2696. 航班安排
链接 https://darkbzoj.tk/problem/2696 题意 神犇航空有 K K K 架飞机, N N N 个机场,以 0 ∼ N − 1 0\sim N−1 0∼N−1 编号,其中 ...
- ROADS POJ - 1724(最短路+邻接表+dfs)
题意: N个城市,编号1到N.城市间有R条单向道路.有长度和过路费两个属性.Bob只有K块钱,他想从城市1走到城市N.问最短共需要走多长的路.如果到不了N,输出-1. 题目: N cities nam ...
- PAT甲级1087 All Roads Lead to Rome (30分):[C++题解]dijkstra求单源最短路综合、最短路条数、保存路径
文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: 首先这是一道dijkstra算法求最短路的题目,不过此题较为复杂.首先需要将字符串城市名映射成数字,这里使用hash table 名 ...
- 【bzoj2324】[ZJOI2011]营救皮卡丘 最短路-Floyd+有上下界费用流
原文地址:http://www.cnblogs.com/GXZlegend/p/6832504.html 题目描述 皮卡丘被火箭队用邪恶的计谋抢走了!这三个坏家伙还给小智留下了赤果果的挑衅!为了皮卡丘 ...
- 洛谷 - P4009 汽车加油行驶问题(分层图最短路/最小费用最大流)
题目链接:点击查看 题目大意:给出一个n*n的矩阵表示道路,途中有一些加油站,现在要从点(1,1)到达点(n,n),问最小花费,其中的一些规则如下: 汽车只能沿着网格边行驶,装满油后可以行驶K条边,出 ...
最新文章
- ClickHouse系列教程八:从一个服务器导入4T数据到另外一个服务器
- [置顶] 决策树绘图(二)
- 坦克大战c语言程序贴吧,坦克大战!
- jQuery 2.0.3 源码分析 事件体系结构
- Springboot分模块开发详解(2):建立子工程
- Python:Tensorflow中两个稀疏张量相乘
- linuxShell之一 文件读取 循环与分支
- Android Studio用不了jar
- mysql的cnf配置文件全解析
- position: relative相对定位
- ai里为什么不能随意放大缩小_AI选择工具为什么不能选择,缩放不了图像大小.
- 好用的在线思维导图软件--GitMind
- 滤波电容的大小的选取
- 数据中台应用实战-数据中台建设四步方法论:采、存、通、用
- linux挂载2T以上硬盘
- 演讲比赛流程管理---C++
- Android数据库比较
- 2021年如何加快百度对新站点的收录呢?
- 云服务器怎样搭建静态网站?
- 高并发的epoll+线程池,线程池专注实现业务
热门文章
- 游戏寻路中 A* 算法的改进
- 游戏市场阴影下的手游厂商,和他们无法触碰的未来
- 程序员养发(老师付推荐)
- 【算法】螺旋方阵 上交OJ1021
- django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE的解决办法(转)...
- TestNG+ReportNG+Maven优化测试报告
- Windsock套接字I/O模型学习 --- 第二章
- 【Xamarin挖墙脚系列:Xamarin4.0的重大变更】
- 享元模式 Composite
- Android与Linux以及GNU的关系