hdu 1385 Floyd 输出路径
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
- # include <iostream>
- # include <cstdio>
- # include <cstring>
- # include <string>
- # include <algorithm>
- # include <cmath>
- # include <map>
- # define LL long long
- using namespace std ;
- const int MAXN = ;
- const int INF = 0x3f3f3f3f;
- int dis[MAXN][MAXN];
- int b[MAXN] ;
- int path[MAXN][MAXN] ;
- int n ;
- void floyed()//节点从1~n编号
- {
- int i,j,k;
- for (i = ; i <= n; i++)
- for (j = ; j <= n; j++)
- path[i][j] = j; //记录路径数组初始化,表示从i到j经过的第一个站
- for(k=;k<=n;k++)
- for(i=;i<=n;i++)
- for(j=;j<=n;j++)
- {
- int t = dis[i][k]+dis[k][j] + b[k] ;
- if (t < dis[i][j])
- {
- dis[i][j] = t ;
- path[i][j] = path[i][k] ;
- }
- else if (t == dis[i][j] && path[i][k] < path[i][j])
- path[i][j] = path[i][k] ;
- }
- }
- int main()
- {
- // freopen("in.txt","r",stdin) ;
- while (scanf("%d" , &n) , n)
- {
- int i , j ;
- for (i = ; i <= n ; i++)
- for (j = ; j <= n ; j++)
- {
- scanf("%d" , &dis[i][j]) ;
- if (dis[i][j] == -)
- dis[i][j] = INF ;
- }
- for (i = ; i <= n ; i++)
- scanf("%d" , &b[i]) ;
- floyed() ;
- int u , v ;
- while(scanf("%d %d" , &u , &v) )
- {
- if (u == - && v == -)
- break ;
- printf ("From %d to %d :\n", u, v);
- printf ("Path: %d", u);
- int t = u;
- while (u != v)
- {
- printf ("-->%d", path[u][v]);
- u = path[u][v];
- }
- printf ("\nTotal cost : %d\n\n", dis[t][v]);
- }
- }
- return ;
- }
hdu 1385 Floyd 输出路径的更多相关文章
- hdu 1385 floyd记录路径
可以用floyd 直接记录相应路径 太棒了! http://blog.csdn.net/ice_crazy/article/details/7785111 #include"stdio.h& ...
- HD1385Minimum Transport Cost(Floyd + 输出路径)
Minimum Transport Cost Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/O ...
- hdu 1026(BFS+输出路径) 我要和怪兽决斗
http://acm.hdu.edu.cn/showproblem.php?pid=1026 模拟一个人走迷宫,起点在(0,0)位置,遇到怪兽要和他决斗,决斗时间为那个格子的数字,就是走一个格子花费时 ...
- hdu 1503 LCS输出路径【dp】
hdu 1503 不知道最后怎么输出,因为公共部分只输出一次.有人说回溯输出,感觉好巧妙!其实就是下图,输出的就是那条灰色的路径,但是初始时边界一定要初始化一下,因为最第一列只能向上走,第一行只能向左 ...
- *HDU 1385 最短路 路径
Minimum Transport Cost Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/O ...
- hdu 1385 floyd字典序
Minimum Transport Cost Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/O ...
- hdu 1385(Floyed+打印路径好题)
Minimum Transport Cost Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/O ...
- HDU 1385 Minimum Transport Cost (最短路,并输出路径)
题意:给你n个城市,一些城市之间会有一些道路,有边权.并且每个城市都会有一些费用. 然后你一些起点和终点,问你从起点到终点最少需要多少路途. 除了起点和终点,最短路的图中的每个城市的费用都要加上. 思 ...
- hdu Minimum Transport Cost(按字典序输出路径)
http://acm.hdu.edu.cn/showproblem.php? pid=1385 求最短路.要求输出字典序最小的路径. spfa:拿一个pre[]记录前驱,不同的是在松弛的时候.要考虑和 ...
随机推荐
- Docker部署Consul集群
服务介绍 Consul是一种分布式.高可用.支持水平扩展的服务注册与发现工具.包含的特性有:服务发现.健康检查.键值存储.多数据中心和服务管理页面等. 官方架构设计图: 图中包含两个Consul数据中 ...
- Spring Boot 启动过程及 自定义 Listener等组件
一.启动过程 二.自定义组件 package com.example.jdbc.listener; import org.springframework.context.ApplicationCont ...
- android 不同Activity之间数据传递
1. 传值Activity package mydemo.mycom.demo2; import android.content.Intent; import android.support.v7.a ...
- js取最大最小值
链接:https://www.cnblogs.com/waitingbar/p/4323600.html js取最小最大值--Math.min().math.max() 一.Math.min() 返回 ...
- 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 ...
- TCP网络编程
TCP网络编程 与UDP不同的是TCP是通过客服端和服务端的方式来传输数据的.客服端:public class TCPClient { /** * @param args * @th ...
- Maven打包编译找不到com.sun.crypto.provider.SunJCE类
Maven配置 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>mav ...
- WPF GridView的列宽度设置为按比例分配
<Grid> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="3*" / ...
- map_server地图服务器
http://wiki.ros.org/map_server 概述 map_server提供map_server ROS节点,它提供地图数据作为一个ROS服务器.也提供map_saver命令行功能,能 ...
- Vim中自动在程序起始处添加版权和作者信息
在编写程序的时候,经常需要在程序开始写上程序的简要介绍和作者信息,如下: 这种信息,除了文件名和修改时间可能经常发生变化外,其他基本不变,可以在程序开始自动加入,方法就是在家目录下的.vimrc中写入 ...