HDU 3790最短路径问题 [最短路最小花费]
题目链接:【http://acm.hdu.edu.cn/showproblem.php?pid=3790】
最短路径问题
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 25620 Accepted Submission(s): 7650
(1<n<=1000, 0<m<100000, s != t)
题解:最短路问题容易解决:最多有1000个顶点,用邻接矩阵保存边,并维护重边,DIJ(O(n^2))可以解决。在维护最短路的同时维护最小费用。如果dis[u]>dis[v]+E[u][v]||(dis[u]==dis[v]+mp[u][v]&&CO[u]>CO[v]+mp[u][v])。
#include<bits/stdc++.h> using namespace std; const int INF = 1e7 + 15; const int maxn = 2050; int N, M; int E[maxn][maxn], CO[maxn][maxn]; int dis[maxn], cost[maxn], vis[maxn]; void DIJ(int st, int ed) {for(int i = 1; i <= N; i++)dis[i] = cost[i] = INF;dis[st] = cost[st] = 0;memset(vis, 0, sizeof(vis));for(int i = 1; i <= N; i++){int x = -1, len = INF + 15;for(int j = 1; j <= N; j++)if(!vis[j] && len > dis[j]) len = dis[x = j];if(x == -1) break;vis[x] = 1;for(int v = 1; v <= N; v++){if(dis[v] > dis[x] + E[x][v] || (dis[v] == dis[x] + E[x][v] && cost[v] > cost[x] + CO[x][v])){dis[v] = dis[x] + E[x][v];cost[v] = cost[x] + CO[x][v];}}} } int main () {while(~scanf("%d%d", &N, &M)){if(N == 0 && M == 0) break;int u, v, len, co;for(int i = 1; i <= N; i++){for(int j = 1; j <= N; j++)E[i][j] = CO[i][j] = INF;E[i][i] = CO[i][i] = 0;}for(int i = 1; i <= M; i++){scanf("%d%d%d%d", &u, &v, &len, &co);if(E[u][v] > len || (E[u][v] == len && CO[u][v] > co)){E[u][v] = E[v][u] = len;CO[u][v] = CO[v][u] = co;}}int st, ed;scanf("%d%d", &st, &ed);DIJ(st, ed);printf("%d %d\n", dis[ed], cost[ed]);}return 0; }
转载于:https://www.cnblogs.com/pealicx/p/6677443.html
HDU 3790最短路径问题 [最短路最小花费]相关推荐
- HDU 3790 最短路径问题 裸跑dijkstra
原题: http://acm.hdu.edu.cn/showproblem.php?pid=3790 题目: 最短路径问题 Time Limit: 2000/1000 MS (Java/Others) ...
- hdu 3790(最短路径问题 SPFA算法)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3790 最短路径问题 Time Limit: 2000/1000 MS (Java/Others) ...
- hdu 3790 最短路径dijkstra(多重权值)
最短路径问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- hdu 3790 最短路径问题
最短路径问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- HDU 3790 最短路径问题 (dijkstra)
最短路径问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- HDU 3790 最短路径问题
最短路径问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- HDU - 3790 最短路径问题
给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的. Input输入n,m,点的编号是1~n,然后是m行 ...
- HDU 3790 最短路径问题 (SPFA)
转载请注明出处:http://blog.csdn.net/a1dark 分析:比一般最短路多了一个花费.多加一个判断即可.用的SPFA.这道题让我搞清楚了以前定义INF为啥爆的问题.受益颇多. #in ...
- 【最短路】【Dijkstra】【图论】最小花费(jzoj 2125)
最小花费 题目大意: n个人,一些人之间可以相互转账,但又手续费x%,问A转给B100元至少要多少钱 样例输入 3 3 1 2 1 2 3 2 1 3 3 1 3 样例输出 103.07153164 ...
- 【图论】【最短路】【Dijkstra】最小花费(ssl 2206/luogu 1576)
最小花费 ssl 2206 luogu 1576 题目大意: 有n个人,他们之间有m对人可以相互{\color{red}相互}相互转账,但要收一定的税,求第x个人转给第y个人至少要多少钱 Descri ...
最新文章
- 大数据产业正处在蓬勃发展的孕育期与机遇期
- 云计算 码率适配限速_面向大型集团公司的云平台架构
- 腾讯云上午突发故障 称运营商光缆中断所致
- Python二分查找的三种思路
- 期末考试前的预习,科目:化工设备与反应器(3)
- windows 10 开启全盘瞬间索引功能
- IE6不支持PNG图片透明效果的完美解决方案(完善版)
- B样条曲线介绍和实现(等值线平滑)
- css3制作八棱锥_CSS3制作各种形状图像
- Speaker Recognition: Feature Extraction
- [Tailwind] Control What Variations are Generated for Each Utility Class Module in Tailwind
- (新手)使用pandas操作EXCEL
- 百度霸屏技术的源码发布
- 程序实现黎曼和(定积分)
- 区块链赋能供应链金融
- 哪上班 | 好工作近在咫尺
- 武汉大学java 期末考试试题_武汉大学java期末考试试题和答案
- vue实现1-4-9宫格切换
- 关于DS12C887 以外部RAM方式访问
- 开始撸lodash源码
热门文章
- bootstrap 黑边框表格样式_bootstrap3.0教程之多种表格效果(条纹状表格、条纹状表格、鼠标悬停等)...
- python3 yield_详解Python3中yield生成器的用法
- mql 查询多结果_MQL入门到精通EA教程第六课MQL语言基础(五)
- gRPC 1.20.1 发布,谷歌开源的高性能 RPC 框架
- 高效查询ECS可用资源的实践
- 【9.28作业】论XX信息系统建设项目的范围管理
- C#开发微信门户及应用(13)-使用地理位置扩展相关应用
- Java面向对象的编程
- Charades数据集
- attention的前世今生