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. Cocos2d-x3.0 捕Android菜单键和返回键

    原文地址:http://blog.csdn.net/qqmcy/article/details/26172665 .h void onKeyReleased(EventKeyboard::KeyCod ...

  2. Jquery的一些简单使用记录

    //平滑滚动到底部 $(".list").scrollTo('100%', '100%', { easing: 'swing' }); //直接滚动至底部(无效果) $('.lis ...

  3. C# 获得当前应用程序路径

    1.获得当前应用程序的路径最稳定的方法:AppDomain.CurrentDomain.BaseDirectory 生成的路径:../项目名称/bin/Debug下的路径

  4. Hibernate学习之hql查询语句

    *  页面上数据的字段和数据库中字段差不多,这个时候,采用迫切连接  结构比较好,如果页面上的字段很少,要按照需求加载数据,采用带构造函数的select查询 实例讲解:转自:http://www.cn ...

  5. JQuery中回车键登陆

    //点击回车键 //王东升/2015/3/11 document.onkeydown = function (event) { var e = event ? event : (window.even ...

  6. 运用DIV拖拽实现resize和碰撞检测

    运用DIV拖拽实现resize和碰撞检测 Div由拖拽改变大小 演示demo 当我们运用html元素"textarea"写一个文本输入框时,浏览器会自动生成以下样式 用鼠标拖动右下 ...

  7. HTML+CSS笔记 CSS进阶再续

    CSS的布局模型 清楚了CSS 盒模型的基本概念. 盒模型类型, 我们就可以深入探讨网页布局的基本模型了.布局模型与盒模型一样都是 CSS 最基本. 最核心的概念. 但布局模型是建立在盒模型基础之上, ...

  8. GCD 之 同步 异步 并发

    1. dispatch_async(dispatch_get_global_queue(, ), ^{ // 处理耗时操作的代码块... //通知主线程刷新 dispatch_async(dispat ...

  9. 扩展ASP.NET MVC HtmlHelper类

    在这篇帖子中我会使用一个示例演示扩展ASP.NET MVC HtmlHelper类,让它们可以在你的MVC视图中工作.这个示例中我会提供一个简单的方案生成Html表格. HtmlHelper类 Htm ...

  10. Qt实战之开发CSDN下载助手 (2)

    现在,我们正式开工啦.这一篇主要学习下基本的抓包分析.学会协议登录CSDN并制作登陆界面. 准备工具: 一款http抓包工具. 可以是FireBug或者fiddler.这里我们用httpWatch. ...