Floyd 输出路径

Sample Input
5
0 3 22 -1 4
3 0 5 -1 -1
22 5 0 9 20
-1 -1 9 0 4
4 -1 20 4 0
5 17 8 3 1 //收费
1 3 //起点 终点
3 5
2 4
-1 -1
0

Sample Output
From 1 to 3 :
Path: 1-->5-->4-->3
Total cost : 21

From 3 to 5 :
Path: 3-->4-->5
Total cost : 16

From 2 to 4 :
Path: 2-->1-->5-->4
Total cost : 17

  1. # include <iostream>
  2. # include <cstdio>
  3. # include <cstring>
  4. # include <string>
  5. # include <algorithm>
  6. # include <cmath>
  7. # include <map>
  8. # define LL long long
  9. using namespace std ;
  10.  
  11. const int MAXN = ;
  12. const int INF = 0x3f3f3f3f;
  13. int dis[MAXN][MAXN];
  14. int b[MAXN] ;
  15. int path[MAXN][MAXN] ;
  16. int n ;
  17.  
  18. void floyed()//节点从1~n编号
  19. {
  20. int i,j,k;
  21. for (i = ; i <= n; i++)
  22. for (j = ; j <= n; j++)
  23. path[i][j] = j; //记录路径数组初始化,表示从i到j经过的第一个站
  24. for(k=;k<=n;k++)
  25. for(i=;i<=n;i++)
  26. for(j=;j<=n;j++)
  27. {
  28. int t = dis[i][k]+dis[k][j] + b[k] ;
  29. if (t < dis[i][j])
  30. {
  31. dis[i][j] = t ;
  32. path[i][j] = path[i][k] ;
  33. }
  34. else if (t == dis[i][j] && path[i][k] < path[i][j])
  35. path[i][j] = path[i][k] ;
  36.  
  37. }
  38.  
  39. }
  40.  
  41. int main()
  42. {
  43. // freopen("in.txt","r",stdin) ;
  44. while (scanf("%d" , &n) , n)
  45. {
  46. int i , j ;
  47. for (i = ; i <= n ; i++)
  48. for (j = ; j <= n ; j++)
  49. {
  50. scanf("%d" , &dis[i][j]) ;
  51. if (dis[i][j] == -)
  52. dis[i][j] = INF ;
  53. }
  54. for (i = ; i <= n ; i++)
  55. scanf("%d" , &b[i]) ;
  56. floyed() ;
  57. int u , v ;
  58. while(scanf("%d %d" , &u , &v) )
  59. {
  60. if (u == - && v == -)
  61. break ;
  62. printf ("From %d to %d :\n", u, v);
  63. printf ("Path: %d", u);
  64. int t = u;
  65. while (u != v)
  66. {
  67. printf ("-->%d", path[u][v]);
  68. u = path[u][v];
  69. }
  70. printf ("\nTotal cost : %d\n\n", dis[t][v]);
  71. }
  72.  
  73. }
  74. return ;
  75. }

hdu 1385 Floyd 输出路径的更多相关文章

  1. hdu 1385 floyd记录路径

    可以用floyd 直接记录相应路径 太棒了! http://blog.csdn.net/ice_crazy/article/details/7785111 #include"stdio.h& ...

  2. HD1385Minimum Transport Cost(Floyd + 输出路径)

    Minimum Transport Cost Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/O ...

  3. hdu 1026(BFS+输出路径) 我要和怪兽决斗

    http://acm.hdu.edu.cn/showproblem.php?pid=1026 模拟一个人走迷宫,起点在(0,0)位置,遇到怪兽要和他决斗,决斗时间为那个格子的数字,就是走一个格子花费时 ...

  4. hdu 1503 LCS输出路径【dp】

    hdu 1503 不知道最后怎么输出,因为公共部分只输出一次.有人说回溯输出,感觉好巧妙!其实就是下图,输出的就是那条灰色的路径,但是初始时边界一定要初始化一下,因为最第一列只能向上走,第一行只能向左 ...

  5. *HDU 1385 最短路 路径

    Minimum Transport Cost Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/O ...

  6. hdu 1385 floyd字典序

    Minimum Transport Cost Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/O ...

  7. hdu 1385(Floyed+打印路径好题)

    Minimum Transport Cost Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/O ...

  8. HDU 1385 Minimum Transport Cost (最短路,并输出路径)

    题意:给你n个城市,一些城市之间会有一些道路,有边权.并且每个城市都会有一些费用. 然后你一些起点和终点,问你从起点到终点最少需要多少路途. 除了起点和终点,最短路的图中的每个城市的费用都要加上. 思 ...

  9. hdu Minimum Transport Cost(按字典序输出路径)

    http://acm.hdu.edu.cn/showproblem.php? pid=1385 求最短路.要求输出字典序最小的路径. spfa:拿一个pre[]记录前驱,不同的是在松弛的时候.要考虑和 ...

随机推荐

  1. Docker部署Consul集群

    服务介绍 Consul是一种分布式.高可用.支持水平扩展的服务注册与发现工具.包含的特性有:服务发现.健康检查.键值存储.多数据中心和服务管理页面等. 官方架构设计图: 图中包含两个Consul数据中 ...

  2. Spring Boot 启动过程及 自定义 Listener等组件

    一.启动过程 二.自定义组件 package com.example.jdbc.listener; import org.springframework.context.ApplicationCont ...

  3. android 不同Activity之间数据传递

    1. 传值Activity package mydemo.mycom.demo2; import android.content.Intent; import android.support.v7.a ...

  4. js取最大最小值

    链接:https://www.cnblogs.com/waitingbar/p/4323600.html js取最小最大值--Math.min().math.max() 一.Math.min() 返回 ...

  5. Java EE之Hibernate异常总结【3】Disabling contextual LOB creation as createClob() method threw error java.lang.reflect.InvocationTargetException

    参考文献:https://stackoverflow.com/questions/4588755/disabling-contextual-lob-creation-as-createclob-met ...

  6. TCP网络编程

    TCP网络编程  与UDP不同的是TCP是通过客服端和服务端的方式来传输数据的.客服端:public class TCPClient { /**     * @param args     * @th ...

  7. Maven打包编译找不到com.sun.crypto.provider.SunJCE类

    Maven配置 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>mav ...

  8. WPF GridView的列宽度设置为按比例分配

    <Grid> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="3*" / ...

  9. map_server地图服务器

    http://wiki.ros.org/map_server 概述 map_server提供map_server ROS节点,它提供地图数据作为一个ROS服务器.也提供map_saver命令行功能,能 ...

  10. Vim中自动在程序起始处添加版权和作者信息

    在编写程序的时候,经常需要在程序开始写上程序的简要介绍和作者信息,如下: 这种信息,除了文件名和修改时间可能经常发生变化外,其他基本不变,可以在程序开始自动加入,方法就是在家目录下的.vimrc中写入 ...