1. //Dijkstra
  2. #include<iostream>
  3. #include<cstdio>
  4. #include<cstdlib>
  5. #include<cstring>
  6. #include<string>
  7. #define INF 0x3f3f3f3f
  8. using namespace std;
  9. struct node
  10. {
  11. int d,p;
  12. } mat[1005][1005];
  13. int main()
  14. {
  15. int x,y,n,m,a,b,s,t,i,j,k,d[1005],p[1005],minsd,minsp,visited[1005];
  16. while(scanf("%d%d",&n,&m)!=EOF&&(n!=0||m!=0))
  17. {
  18. memset(visited,0,sizeof(visited));
  19. for(i=1; i<=n; i++)
  20. for(j=1; j<=n; j++)
  21. {
  22. mat[i][j].d=INF;
  23. mat[i][j].p=INF;
  24. }//初始化矩阵
  25. for(i=1; i<=m; i++)
  26. {
  27. cin >> a >> b >> x >> y;//注意,把重复的边去掉,在这里WA两次
  28. if(x < mat[a][b].d || (x == mat[a][b].d && y < mat[a][b].p))
  29. {
  30. mat[a][b].d = mat[b][a].d = x;
  31. mat[a][b].p = mat[b][a].p = y;
  32. }
  33. }
  34. cin >> s >> t;
  35. visited[s]=1,d[s]=0;
  36. for(i=1; i<=n; i++)
  37. {
  38. d[i]=mat[s][i].d;
  39. p[i]=mat[s][i].p;
  40. }//距离的初始化
  41. for(i=1; i<n; i++)
  42. {
  43. minsp=minsd=INF;
  44. for(j=1; j<=n; j++)
  45. if(!visited[j]&&minsd>d[j])
  46. {
  47. minsd=d[j];
  48. minsp=p[j];
  49. k=j;
  50. }//找出最小的边到达的顶点,和prim一样,贪心
  51. visited[k]=1;
  52. for(j=1; j<=n; j++)
  53. if(!visited[j] && mat[k][j].d!=INF)
  54. {
  55. if(d[k]+mat[k][j].d<d[j])
  56. {
  57. d[j]= d[k]+mat[k][j].d;
  58. p[j]= p[k]+mat[k][j].p;
  59. }
  60. else if(d[k]+mat[k][j].d==d[j]&&p[k]+mat[k][j].p<p[j])
  61. p[j]= p[k]+mat[k][j].p;
  62. else ;
  63. }//更新到达的距离,由于不止要选择距离小,要选择话费小的,所以要判断两次
  64. }
  65. cout << d[t] << " " << p[t] << endl;
  66. }
  67. return 0;
  68. }

最短路--Dijkstra算法 --HDU1790的更多相关文章

  1. 单源最短路dijkstra算法&&优化史

    一下午都在学最短路dijkstra算法,总算是优化到了我能达到的水平的最快水准,然后列举一下我的优化历史,顺便总结总结 最朴素算法: 邻接矩阵存边+贪心||dp思想,几乎纯暴力,luoguTLE+ML ...

  2. 最短路Dijkstra算法的一些扩展问题

    最短路Dijkstra算法的一些扩展问题     很早以前写过关于A*求k短路的文章,那时候还不明白为什么还可以把所有点重复的放入堆中,只知道那样求出来的就是对的.知其然不知其所以然是件容易引发伤痛的 ...

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

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

  4. 单源最短路Dijkstra算法——matlab实现

    迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个节点到其他节点的最短路径. 它的主要特点是以起始点为中心向外层层扩展(广度优先搜索思想),直到扩展到终点为止. 基本思想 通过Dijk ...

  5. hdu2544 最短路 Dijkstra算法

    最短路(Dijkstra算法模板题) Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  6. 单源最短路(Dijkstra算法)

    #返回上一级 @Author: 张海拔 @Update: 2015-03-11 @Link: http://www.cnblogs.com/zhanghaiba/p/3514570.html Dijk ...

  7. 单源最短路——dijkstra算法

    Dijkstra算法 1.定义概览 Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径.主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止. 问 ...

  8. POJ 3268 Silver Cow Party 最短路—dijkstra算法的优化。

    POJ 3268 Silver Cow Party Description One cow from each of N farms (1 ≤ N ≤ 1000) conveniently numbe ...

  9. POJ-3268-最短路(dijkstra算法)

    Silver Cow Party Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 12494   Accepted: 5568 ...

随机推荐

  1. angularjs服务常见用法

    服务可以再应用的整个生命周期内保持数据,不会在切换路由或者重新加载视图时被清楚掉(控制器只有在需要时才被实例化) 服务是一个单例对象,在每个应用中只会被实例化一次 服务在应用的生命周期内保存数据 an ...

  2. mysql远程连接

    多人开发时,每人一份程序文件.但是有时需要公用一个份数据库.这时就需要数据库能远程连接. 现在以mysql为例演示一下. 这里远程连接可以 1.允许固定客户端ip登陆. select host,use ...

  3. silverlight中DataGrid数据高亮显示

    效果如图所示, <UserControl xmlns:controls="clr-namespace:System.Windows.Controls;assembly=System.W ...

  4. 如何设置路由器实现静态IP配置

    一.概述 嵌入式开发者,经常面对这样的环境:PC(windows)+虚拟机(linux)+开发板.我们希望三者都能相互通信,而且可以联网. 对于实验室只提供一根网线,而自己没有额外的增加端口数量的设备 ...

  5. SSL交互和握手过程

    SSL消息按如下顺序发送:  1.Client Hello  客户发送服务器信息,包括它所支持的密码组.密码组中有密码算法和钥匙大小: 2.Server Hello  服务器选择客户和服务器都支持的密 ...

  6. CSS font-family的順序

    2016年09月07日 13時51分 wanglinqiang整理 相信大家都知道基本的用法是這樣: font-family:font1,font2,serif; 系統有font1就先用font1 如 ...

  7. [UOJ 74] 【UR #6】破解密码

    题目链接:UOJ - 74 题目分析 题目中,将字符串 S 的第一个字符移到末尾,其他字符向前移动一个位置,f(S) 就从 Hi 变成了 Hi+1. 我们分析一下这个过程:假设第一个字符为 c, (H ...

  8. 【Java】数据库连接池技术

    JDBC的问题 在程序中,我们经常要建立与数据库的连接,之后再关闭这个连接.我们知道,数据库连接对象的创建是比较消耗系统性能的,这些频繁的操作势必会消耗大量的系统资源.因此我们需要采用更高效的数据库访 ...

  9. unity 基础之InputManager

    unity  基础之InputManager 说一下unity中的InputManager,先截个图 其中Axes指的是有几个轴向!Size指的是有几个轴,改变Size可以添加或者减少轴! Name指 ...

  10. 15个网页设计必备的Google Chrome 扩展

    2011年第一篇,翻译自freelancefolder的一篇文章.以下为译文内容: 最近,我将Google Chrome作为了我的主力浏览器,同时,将其作为我设计和开发网页的工具,尽管我还时常会去Fi ...