题目链接: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): 22854    Accepted Submission(s):
6813

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
 
分析:路最短时选最少费用。
这里的输入判重,我要WA哭了。还有我的freopen没有注释掉,差点晕掉。
  1. #include <cstring>
  2. #include <stdio.h>
  3. #include <algorithm>
  4.  
  5. using namespace std;
  6.  
  7. #define maxn 1010
  8. #define INF 0x3f3f3f3f
  9. int dis[maxn],visit[maxn],cost[maxn];
  10. int maps[maxn][maxn],maps2[maxn][maxn];
  11. int n,m;
  12.  
  13. int start,send;
  14. void dijkstra(int s)
  15. {
  16.  
  17. for(int i=; i<=n; i++)
  18. {
  19. dis[i]=maps[start][i];
  20. cost[i]=maps2[start][i];
  21. visit[i]=;
  22. }
  23.  
  24. visit[s]=;
  25. dis[s] = ;
  26. cost[s] = ;
  27.  
  28. for(int i=; i<n-; i++)
  29. {
  30. int temp=INF, k =;
  31. for(int j=; j<=n; j++)
  32. {
  33. if(visit[j]==false)
  34. {
  35. if(temp>dis[j])
  36. {
  37. temp = dis[j];
  38. k = j;
  39. }
  40. }
  41. }
  42. visit[k]=;
  43. for(int j=; j<=n; j++)
  44. {
  45. if(!visit[j])
  46. {
  47. if(dis[j]>dis[k]+maps[k][j])
  48. {
  49. dis[j]=dis[k]+maps[k][j];
  50. cost[j]=cost[k]+maps2[k][j];
  51. }
  52. else if(dis[j]==dis[k]+maps[k][j])
  53. cost[j]=min(cost[j],cost[k]+maps2[k][j]);
  54. }
  55. }
  56. }
  57. }
  58. int main()
  59. {
  60. //freopen("input.txt","r",stdin);
  61. while(scanf("%d%d",&n,&m),n)
  62. {
  63. for(int i=; i<=n; ++i)
  64. {
  65. for(int j=; j<=n; ++j)
  66. {
  67. if(i==j)
  68. maps[i][j]=maps2[i][j]=;
  69. else
  70. maps[i][j]=maps2[i][j]=INF;
  71. }
  72. }
  73. while(m--)
  74. {
  75. int a,b,d,c;
  76. scanf("%d%d%d%d",&a,&b,&d,&c);
  77. if(maps[a][b]>d)
  78. {
  79. maps[a][b]=maps[b][a]=d;
  80. maps2[a][b]=maps2[b][a]=c;
  81. }
  82. if(maps[a][b]==d&&maps2[a][b]>c)
  83. maps2[a][b]=maps2[b][a]=c;
  84. }
  85. scanf("%d%d",&start,&send);
  86. dijkstra(start);
  87. printf("%d %d\n",dis[send],cost[send]);
  88. }
  89. return ;
  90. }

HDU(3790),最短路二级标准的更多相关文章

  1. ACM: HDU 3790 最短路径问题-Dijkstra算法

    HDU 3790 最短路径问题 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Des ...

  2. ACM: HDU 2544 最短路-Dijkstra算法

    HDU 2544最短路 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Descrip ...

  3. UESTC 30 &&HDU 2544最短路【Floyd求解裸题】

    最短路 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  4. hdu 5521 最短路

    Meeting Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total ...

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

    HDU - 3790 最短路径问题 Description 给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费 ...

  6. HDU - 2544最短路 (dijkstra算法)

    HDU - 2544最短路 Description 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt.但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以 ...

  7. HDU 3790最短路径问题 [最短路最小花费]

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

  8. hdu 3790 最短路径问题(两个限制条件的最短路)

    http://acm.hdu.edu.cn/showproblem.php?pid=3790 有两个条件:距离和花费.首先要求距离最短,距离相等的条件下花费最小. dijkstra,仅仅是在推断条件时 ...

  9. HDU 3790 最短路径问题 (最短路)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3790 简单的最短路问题,这题听说有重边.我用spfa和dijkstra写了一遍,没判重边,速度都差不多 ...

随机推荐

  1. G面经prepare: BuyGoods

    给你一部分钱和一些不同价钱的商品,如何在最多买K件商品的情况下尽可能多的花掉手里的钱. 举例:口袋里的钱数: 10; K=2 产品价格: [3, 6, 8, 7, 9] 输出 3, 7 Backtra ...

  2. Smarty模板

    Smarty模板 是做什么用的?? 是将前端的显示和后台的逻辑进行分离,就相当于把前台显示的页面和后台要实现的某些功能的逻辑给分离出来了,分离在两个文件里,也就是说,前端只负责显示,后端只负责逻辑操作 ...

  3. hdu 2528 Area

    2014-07-30 http://acm.hdu.edu.cn/showproblem.php?pid=2528解题思路: 求多边形被一条直线分成两部分的面积分别是多少.因为题目给的直线一定能把多边 ...

  4. 安装Eclipse并配置JacORB插件

    前人成果 •      eclipse中开发corba完整说明(jacORB版) http://blog.csdn.net/hq0927/article/details/8129534 •      ...

  5. oracle 的索引

    一.索引分类      按逻辑分: 单列索引(Single column):  单列索引是基于单列所创建的索引 复合(多列)索引(Concatenated ): 复合索引是基于两列或者多列所创建的索引 ...

  6. PTPX中的activity文件以及mapping文件

    在不同的simulation中的capturing switching activity: SAIF:Switching Activity Interface Format,包含toggle coun ...

  7. android SDK安装容易出错的原因

    1.实际上,安卓SDK安装之后,拷贝到其他的机子上面.配置一下环境变量,就可以跑起来的 2.但是拷贝到其他的机子上面临着一个问题就是Eclipse已经配置了的android环境,需要在新的机子上面修改 ...

  8. tcp socket

    1.TCP连接手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接.TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在"无差别&quo ...

  9. JeeSite开发笔记

    开发流程笔记: http://m.blog.csdn.net/article/details?id=51251619

  10. linux设备驱动归纳总结(三):1.字符型设备之设备申请【转】

    本文转载自:http://blog.chinaunix.net/uid-25014876-id-59416.html linux设备驱动归纳总结(三):1.字符型设备之设备申请 操作系统:Ubunru ...