题目链接:【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

Problem Description
给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的。
Input
输入n,m,点的编号是1~n,然后是m行,每行4个数 a,b,d,p,表示a和b之间有一条边,且其长度为d,花费为p。最后一行是两个数 s,t;起点s,终点。n和m为0时输入结束。
(1<n<=1000, 0<m<100000, s != t)
Output
输出 一行有两个数, 最短距离及其花费。
Sample Input
3 2 1 2 5 6 2 3 4 5 1 3 0 0
Sample Output
9 11
Source
浙大计算机研究生复试上机考试-2010年

题解:最短路问题容易解决:最多有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最短路径问题 [最短路最小花费]相关推荐

  1. HDU 3790 最短路径问题 裸跑dijkstra

    原题: http://acm.hdu.edu.cn/showproblem.php?pid=3790 题目: 最短路径问题 Time Limit: 2000/1000 MS (Java/Others) ...

  2. hdu 3790(最短路径问题 SPFA算法)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3790 最短路径问题 Time Limit: 2000/1000 MS (Java/Others)    ...

  3. hdu 3790 最短路径dijkstra(多重权值)

    最短路径问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  4. hdu 3790 最短路径问题

    最短路径问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  5. HDU 3790 最短路径问题 (dijkstra)

    最短路径问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  6. HDU 3790 最短路径问题

    最短路径问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  7. HDU - 3790 最短路径问题

    给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的. Input输入n,m,点的编号是1~n,然后是m行 ...

  8. HDU 3790 最短路径问题 (SPFA)

    转载请注明出处:http://blog.csdn.net/a1dark 分析:比一般最短路多了一个花费.多加一个判断即可.用的SPFA.这道题让我搞清楚了以前定义INF为啥爆的问题.受益颇多. #in ...

  9. 【最短路】【Dijkstra】【图论】最小花费(jzoj 2125)

    最小花费 题目大意: n个人,一些人之间可以相互转账,但又手续费x%,问A转给B100元至少要多少钱 样例输入 3 3 1 2 1 2 3 2 1 3 3 1 3 样例输出 103.07153164 ...

  10. 【图论】【最短路】【Dijkstra】最小花费(ssl 2206/luogu 1576)

    最小花费 ssl 2206 luogu 1576 题目大意: 有n个人,他们之间有m对人可以相互{\color{red}相互}相互转账,但要收一定的税,求第x个人转给第y个人至少要多少钱 Descri ...

最新文章

  1. 大数据产业正处在蓬勃发展的孕育期与机遇期
  2. 云计算 码率适配限速_面向大型集团公司的云平台架构
  3. 腾讯云上午突发故障 称运营商光缆中断所致
  4. Python二分查找的三种思路
  5. 期末考试前的预习,科目:化工设备与反应器(3)
  6. windows 10 开启全盘瞬间索引功能
  7. IE6不支持PNG图片透明效果的完美解决方案(完善版)
  8. B样条曲线介绍和实现(等值线平滑)
  9. css3制作八棱锥_CSS3制作各种形状图像
  10. Speaker Recognition: Feature Extraction
  11. [Tailwind] Control What Variations are Generated for Each Utility Class Module in Tailwind
  12. (新手)使用pandas操作EXCEL
  13. 百度霸屏技术的源码发布
  14. 程序实现黎曼和(定积分)
  15. 区块链赋能供应链金融
  16. 哪上班 | 好工作近在咫尺
  17. 武汉大学java 期末考试试题_武汉大学java期末考试试题和答案
  18. vue实现1-4-9宫格切换
  19. 关于DS12C887 以外部RAM方式访问
  20. 开始撸lodash源码

热门文章

  1. bootstrap 黑边框表格样式_bootstrap3.0教程之多种表格效果(条纹状表格、条纹状表格、鼠标悬停等)...
  2. python3 yield_详解Python3中yield生成器的用法
  3. mql 查询多结果_MQL入门到精通EA教程第六课MQL语言基础(五)
  4. gRPC 1.20.1 发布,谷歌开源的高性能 RPC 框架
  5. 高效查询ECS可用资源的实践
  6. 【9.28作业】论XX信息系统建设项目的范围管理
  7. C#开发微信门户及应用(13)-使用地理位置扩展相关应用
  8. Java面向对象的编程
  9. Charades数据集
  10. attention的前世今生