Problem Description
在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt。但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找最短的从商店到赛场的路线,你可以帮助他们吗?

 
Input
输入包括多组数据。每组数据第一行是两个整数N、M(N<=100,M&
lt;=10000),N表示成都的大街上有几个路口,标号为1的路口是商店所在地,标号为N的路口是赛场所在地,M则表示在成都有几条路。N=M=0表
示输入结束。接下来M行,每行包括3个整数A,B,C(1<=A,B<=N,1<=C<=1000),表示在路口A与路口B之间
有一条路,我们的工作人员需要C分钟的时间走过这条路。
输入保证至少存在1条商店到赛场的路线。
 
Output
对于每组输入,输出一行,表示工作人员从商店走到赛场的最短时间
 
Sample Input
2 1
1 2 3
3 3
1 2 5
2 3 5
3 1 2
0 0
 
Sample Output
3
2
 

方法(1)Dijkstra

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. using namespace std;
  5. #define INF 0x3f3f3f3;
  6. int map[110][110],dis[110],visited[110];
  7. void Dijkstra(int n,int x)
  8. {
  9. int i,p,j,min;
  10. for (i=1;i<=n;i++)
  11. {
  12. dis[i]=map[1][i];
  13. visited[i]=0;
  14. }
  15. visited[x]=1;
  16. for (i=1;i<=n;i++)
  17. {
  18. min=INF;
  19. for (j=1;j<=n;j++)
  20. {
  21. if(!visited[j] && dis[j]<min)
  22. {
  23. p=j;
  24. min=dis[j];
  25. }
  26. }
  27. visited[p]=1;
  28. for (j=1;j<=n;j++)
  29. {
  30. if(!visited[j] && dis[p]+map[p][j]<dis[j])
  31. {
  32. dis[j]=dis[p]+map[p][j];
  33. }
  34. }
  35. }
  36. }
  37. int main()
  38. {
  39. int n,m,i,j,a,b,t;
  40. while(scanf("%d%d",&n,&m)!=EOF,n+m)
  41. {
  42. for (i=1;i<=n;i++)
  43. {
  44. for (j=1;j<=n;j++)
  45. {
  46. map[i][j]=INF;
  47. }
  48. }
  49. for(i=1;i<=m;i++)
  50. {
  51. scanf("%d%d%d",&a,&b,&t);
  52. map[a][b]=map[b][a]=t;
  53. }
  54. Dijkstra(n,1);
  55. printf("%d\n",dis[n]);
  56. }
  57. return 0;
  58. }

方法(2)Flyod

  1. #include <iostream>
  2. #include <cstdio>
  3. using namespace std;
  4. const int INF=0x3f3f3f3f;
  5. int dis[110][110];
  6. int main()
  7. {
  8. int i,j,k,n,m,p,q,s;
  9. while(scanf("%d%d",&n,&m)!=EOF,n+m)
  10. {
  11. for (i=1;i<=n;i++)
  12. {
  13. for(j=1;j<=n;j++)
  14. {
  15. dis[i][j]=INF;
  16. }
  17. }
  18. for (i=0;i<m;i++)
  19. {
  20. scanf("%d%d%d",&p,&q,&s);
  21. dis[p][q]=dis[q][p]=s;
  22. }
  23. for (k=1;k<=n;k++)
  24. {
  25. for (i=1;i<=n;i++)
  26. {
  27. for (j=1;j<=n;j++)
  28. {
  29. if (dis[i][j]>dis[i][k]+dis[k][j])
  30. {
  31. dis[i][j]=dis[i][k]+dis[k][j];
  32. }
  33. }
  34. }
  35. }
  36. printf("%d\n",dis[1][n]);
  37. }
  38. return 0;
  39. }

求最短路最基本的2个算法,持续学习中。

最短路Dijkstra和Flyod的更多相关文章

  1. hdu 2544 最短路 Dijkstra

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2544 题目分析:比较简单的最短路算法应用.题目告知起点与终点的位置,以及各路口之间路径到达所需的时间, ...

  2. 算法学习笔记(三) 最短路 Dijkstra 和 Floyd 算法

    图论中一个经典问题就是求最短路.最为基础和最为经典的算法莫过于 Dijkstra 和 Floyd 算法,一个是贪心算法,一个是动态规划.这也是算法中的两大经典代表.用一个简单图在纸上一步一步演算,也是 ...

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

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

  4. HUD.2544 最短路 (Dijkstra)

    HUD.2544 最短路 (Dijkstra) 题意分析 1表示起点,n表示起点(或者颠倒过来也可以) 建立无向图 从n或者1跑dij即可. 代码总览 #include <bits/stdc++ ...

  5. 训练指南 UVALive - 4080(最短路Dijkstra + 边修改 + 最短路树)

    layout: post title: 训练指南 UVALive - 4080(最短路Dijkstra + 边修改 + 最短路树) author: "luowentaoaa" ca ...

  6. 训练指南 UVA - 10917(最短路Dijkstra + 基础DP)

    layout: post title: 训练指南 UVA - 10917(最短路Dijkstra + 基础DP) author: "luowentaoaa" catalog: tr ...

  7. 训练指南 UVA - 11374(最短路Dijkstra + 记录路径 + 模板)

    layout: post title: 训练指南 UVA - 11374(最短路Dijkstra + 记录路径 + 模板) author: "luowentaoaa" catalo ...

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

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

  9. 华夏60 战斗机(最短路dijkstra)

    华夏60 战斗机(最短路dijkstra) 华夏60 超音速战斗机是当今世界上机动性能最先进的战斗机.战斗过程中的一个关键问题是如何在最短的时间内使飞机从当前的飞行高度和速度爬升/俯冲到指定的高度并达 ...

随机推荐

  1. o怎么样racle输入dmp数据库文件

    Oracle进出口数据imp/exp等价物oracle数据恢复和备份. exp命令可以从远程数据库传输数据server出到本地的dmp文件,imp命令能够把dmp文件从本地导入到远处的数据库serve ...

  2. MyEclipse中jsp的凝视报错解决

    jsp页面中凝视报错: 出错现场:在eclipse中没有报错.在MyEclipse中报错. <!-- To use express install, set to playerProductIn ...

  3. Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (一)

    作为一个完成的应用程序,数据存储操作是必不可少的.因此,Android系统一共提供了四种数据存储方式.分别是:SharePreference.SQLite.Content Provider和File. ...

  4. Eclipse怎么全局搜索替换(整个项目)

    链接地址:http://jingyan.baidu.com/article/3ea51489c1c0d752e61bba2e.html 我们用Eclipse编程,有时候需要将整个项目的某个字符串替换成 ...

  5. C++ enum 作用域问题和解决方案

    C++ 中的枚举类型继承于 C 语言.就像其他从 C 语言继承过来的很多特性一样,C++ 枚举也有缺点,这其中最显著的莫过于作用域问题--在枚举类型中定义的常量,属于定义枚举的作用域,而不属于这个枚举 ...

  6. java牛人给新人的几点建议

    展望未来,总结过去10年的程序员生涯,给程序员小弟弟小妹妹们的一些总结性忠告 走过的路,回忆起来是那么曲折,把自己的一些心得体会分享给程序员兄弟姐妹们,虽然时代在变化,但是很可能你也会走我已经做过的1 ...

  7. document.createElement在IE和Firefox下的差异

    IE有3种方式都可以创建一个元素: 1 document.createElement("<input type=text>") 2 document.createEle ...

  8. 完成端口(Completion Port)详解(超级长,超级清楚)

    http://www.cnblogs.com/lancidie/archive/2011/12/19/2293773.html

  9. MultiView空间例子

    CSS代码: body { font-size:11pt; font-family:宋体; } .mainTitle { font-size:11pt; font-weight:bold; font- ...

  10. PyQt写的浏览单web页面的browser - 开源中国社区

    PyQt写的浏览单web页面的browser - 开源中国社区 PyQt写的浏览单web页面的browser