HDU1385 【输出字典序最小的最短路】
这题经过的结点比较好处理。
主要是字典序的处理。
先是floyd做法,采用记录后驱的方法。 path[i][j]=j【初始化。。。】
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstring>
using namespace std; const int maxn=5000;
const int INF=100000000; int n;
int node[maxn];
int dist[maxn][maxn];
int path[maxn][maxn]; void floyd()
{
for(int i=1;i<=n;i++)//初始化 有一种后驱的感觉
for(int j=1;j<=n;j++)
path[i][j]=j; for(int k=1;k<=n;k++)
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
int temp=dist[i][k]+dist[k][j]+node[k];
if(dist[i][j]>temp)
{
dist[i][j]=temp;
path[i][j]=path[i][k];
}
if(dist[i][j]==temp)
{
if(path[i][j]>path[i][k])
path[i][j]=path[i][k];
}
}
} int main()
{
int a,be,en;
while(scanf("%d",&n)&&n)
{
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
scanf("%d",&a);
if(a!=-1) dist[i][j]=a;
else dist[i][j]=INF;
}
for(int i=1;i<=n;i++) scanf("%d",&node[i]); floyd(); int kcase=0;
while(1)
{
if(kcase!=0) printf("\n");
kcase++;
scanf("%d%d",&be,&en);
if(be==-1&&en==-1) break;
printf("From %d to %d :\n",be,en);
printf("Path: ");
printf("%d",be); int temp=be;
while(temp!=en)
{
printf("-->%d",path[temp][en]);
temp=path[temp][en];
}
printf("\n"); printf("Total cost : %d\n",dist[be][en]); }
}
return 0;
}
接下来是spfa的做法。
HDU1385 【输出字典序最小的最短路】的更多相关文章
- HDU 1385 Minimum Transport Cost (输出字典序最小路径)【最短路】
<题目链接> 题目大意:给你一张图,有n个点,每个点都有需要缴的税,两个直接相连点之间的道路也有需要花费的费用.现在进行多次询问,给定起点和终点,输出给定起点和终点之间最少花费是多少,并且 ...
- UVa 1599 (字典序最小的最短路) Ideal Path
题意: 给出一个图(图中可能含平行边,可能含环),每条边有一个颜色标号.在从节点1到节点n的最短路的前提下,找到一条字典序最小的路径. 分析: 首先从节点n到节点1倒着BFS一次,算出每个节点到节点n ...
- ZOJ-1456 Minimum Transport Cost---Floyd变形+路径输出字典序最小
题目链接: https://vjudge.net/problem/ZOJ-1456 题目大意: Spring国家有N个城市,每队城市之间也许有运输路线,也可能没有.现在有一些货物要从一个城市运到另一个 ...
- hdu 1814 Peaceful Commission (2-sat 输出字典序最小的路径)
Peaceful Commission Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- sdut3562-求字典序最小的最短路 按顶点排序后spfa的反例
首先我们可以这么搞...倒序建图,算出源点s附近的点距离终点的距离,然后判断一下,终点是否能跑到源点 能跑到的话呢,我们就判断s周围的点是否在最短路上,然后我们选编号最小的点就好了 代码 #inclu ...
- poj 1041(欧拉回路+输出字典序最小路径)
题目链接:http://poj.org/problem?id=1041 思路:懒得写了,直接copy吧:对于一个图可以从一个顶点沿着边走下去,每个边只走一次,所有的边都经过后回到原点的路.一个无向图存 ...
- zoj 3204 最小生成树,输出字典序最小的解
注意排序即可 #include<cstdio> #include<iostream> #include<algorithm> #include<cstring ...
- hdu1385 Minimum Transport Cost 字典序最小的最短路径 Floyd
求最短路的算法最有名的是Dijkstra.所以一般拿到题目第一反应就是使用Dijkstra算法.但是此题要求的好几对起点和终点的最短路径.所以用Floyd是最好的选择.因为其他三种最短路的算法都是单源 ...
- [poj2337]求字典序最小欧拉回路
注意:找出一条欧拉回路,与判定这个图能不能一笔联通...是不同的概念 c++奇怪的编译规则...生不如死啊... string怎么用啊...cincout来救? 可以直接.length()我也是长见识 ...
随机推荐
- Got a packet bigger than 'max_allowed_packet' bytes With statement Mysql终端数据同步不成功解决办法
在做两个数据库数据拷贝的时候,遭遇 1153 - Got a packet bigger than 'max_allowed_packet' bytes With statement: 遇到这个问题, ...
- VMware machine里的文件
.nvram——虚拟机BIOS或EFI配置文件. .vmdk——虚拟磁盘特性文件,是存放虚拟磁盘当前状况和上次执行快照时的状况之间的差异的快照文件. .vmsd——虚拟机快照,包含虚拟机快照信息的数据 ...
- 基于visual Studio2013解决面试题之1105字符串压缩
题目
- vim的ex模式用法
本文出自 http://blog.csdn.net/shuangde800 本文是在学习<使用vi编辑器, Lamb & Robbins编著>时在evernote写的其中一章笔 ...
- µC/OS-II版本升级指南
IDE: MDK V4+ MCU: LPC17xx(Cortex-M3) RTOS: µC/OS-II 升级顺序:V2.52->V2.62->V2.76-> ...
- MSSQL - 因为数据库正在使用,所以无法获得对数据库的独占访问权。
关于“因为数据库正在使用,所以无法获得对数据库的独占访问权”的最终解决方案 今天在使用SQL Server2005对某个数据库进行还原操作的时候,出现了如上问题,“因为数据库正在使用,所以无法获得 ...
- C#日志工具汇总
log4net log4net是一个可以帮助程序员把日志信息输出到各种不同目标的.net类库.它可以容易的加载到开发项目中,实现程序调试和运行的时候的日志信息输出,提供了比.net自 ...
- xcode6 中增加SDWebImage/SDWebImageDownloaderOperation.m报错解决方法
报错报错:Use of undeclared identifier '_executing' / '_finished': 解决方法例如以下:
- python 在 eclipse 上的编码配置问题
Eclipse的设置 window->preferences->general->editors->text editors->spelling->encoding ...
- 改变TPageControl的活动标签颜色
设置PageControl的owndraw属性为TRUE. procedure TForm1.pgc1DrawTab(Control: TCustomTabControl; TabIndex: Int ...