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. iOS 相互引用引起内存泄露问题说明

    release动作只会对自身计数减一,而不会对属性发出release消息,只有该对象的引用计数为0,系统才会对该对象的所有属性发出release消息 类A的属性有类B,类B的属性有类A,而且两者都是强 ...

  2. js中if的简写方法

    http://transitions1020.com/# 太帅! <script type="text/javascript"> 如果你想写 if (!false) { ...

  3. Linux(Debain)环境安装WordPress

    一.相关组件安装 1. 安装Apache apt-get install apache2 安装完毕后浏览器 http://localhost/ 或者 http://127.0.0.1 出现It Wor ...

  4. BZOJ 1016: [JSOI2008]最小生成树计数( kruskal + dfs )

    不同最小生成树中权值相同的边数量是一定的, 而且他们对连通性的贡献是一样的.对权值相同的边放在一起(至多10), 暴搜他们有多少种方案, 然后乘法原理. ----------------------- ...

  5. activemq demo指南

    queue与topic的技术特点对比   topic queue 概要 Publish Subscribe messaging 发布订阅消息 Point-to-Point 点对点 有无状态 topic ...

  6. jquery的extend()函数

    extend()是在写插件的过程中常用的方法,该方法有一些重载原型. 1.该方法的原型是: extend(dest,src1,src2,src3...); 它的含义是将src1,src2,src3.. ...

  7. X509Certificate2 本地正常,放到线上内部错误

    iis 找到部署的站点应用连接池,右键高级设置,找到“加载用户配置文件”改为true.window service2008 默认为false的.

  8. Zencart先生成订单后付款,类似淘宝后台修改订单价格

    Zencart 使用 Paypal 付款,会出现漏单的情况,即 paypal 已经收到客户的付款,但是网站后台没有客户的订单.导致 paypal 漏单的原因大致会是当客户跳转到Paypal 网站付款完 ...

  9. bzoj 1295: [SCOI2009]最长距离

    题目链接 1295: [SCOI2009]最长距离 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1165  Solved: 619[Submit][ ...

  10. Elasticsearch 单模式下API的增删改查操作

    <pre name="code" class="html">Elasticsearch 单模式下API的增删改查操作 http://192.168. ...