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. 优化器的使用oracle ---explain plan

    如果要分析某条SQL的性能问题,通常我们要先看SQL的执行计划,看看SQL的每一步执行是否存在问题. 如果一条SQL平时执行的好好的,却有一天突然性能很差,如果排除了系统资源和阻塞的原因,那么基本可以 ...

  2. ListView中响应item的点击事件并且刷新界面

    ---恢复内容开始--- 最近在在实现listview功能中遇到了这个问题: 点击事件写在了adapter的item中,不知道如何在listview的点击事件中更新数据的显示: 总结:1.要使用not ...

  3. zoj 3714 Java Beans

    /*很简单的一题,求连续的m位,求总和最多的值,循环找一下,就出来了*/ #include<stdio.h> ]; int main(int argc, char* argv[]) { i ...

  4. slf4j+log4j配置(Maven)

    首先配置Maven依赖 <!-- http://mvnrepository.com/artifact/org.slf4j/slf4j-log4j12 --> <dependency& ...

  5. Filter 字符编码Filter 一

    使用字符编码Filter package com.helloweenvsfei.filter; import java.io.IOException; import javax.servlet.Fil ...

  6. [Jobdu] 题目1517:链表中倒数第k个结点

    给出一个链表的头指针,要求找到倒数第k个节点,并输出这个节点的值 例子: 先看一个例子,链表为:1 2 3 4 5 6,倒数第2个节点就是5,倒数第一个节点就是6,以此类推.这里的链表有头节点,就是说 ...

  7. python文件操作精髓

    总是记不住API.昨晚写的时候用到了这些,但是没记住,于是就索性整理一下吧: python中对文件.文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块. 得到当前工作目录,即当前Pyth ...

  8. [LeetCode]题解(python):080-Remove Duplicates from Sorted Array II

    题目来源: https://leetcode.com/problems/remove-duplicates-from-sorted-array-ii/ 题意分析: 跟定一个排好序的数组.修改这个数组使 ...

  9. linux历史发展

    1.什么是开源? 开源就是软件和源代码都是公开的. 可以修改(完善作者的代码)和创建自己的软件. 2.免费软件不同于自由软件,虽然它是免费的,但他不公布源代码,共享软件与免费软件有点类似,其初起是不收 ...

  10. discuz默认模板文件结构详解-模板文件夹介绍

    | — template — default   系统内置风格模板(默认风格)| — template — default  – discuz_style_default.xml  风格安装文件,可用 ...