博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 1385 题意 测试数据
阅读量:6856 次
发布时间:2019-06-26

本文共 1579 字,大约阅读时间需要 5 分钟。

题意:两点间的最短距离,并输出路径(按字典序排列),如何理解字典序,如:1>4>5>6的值等于1>2>5>6的值而且都为最短路径,

此时必须输出:1>2>5>6

 

解法:floyd

 

ac代码:

View Code
#include
using namespace std;const int INT=0x7fffff;const int M=1000+99;int map[M][M];//存地图int d[M];//存每一个点的税金int path[M][M];//记录点i->j经过的点int n;void floyd(){ int i,j,k; for(i=1;i<=n;i++) for(j=1;j<=n;j++) path[i][j]=j; for(k=1;k<=n;k++) { for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { if(map[i][k]+map[k][j]+d[k]
path[i][k]) path[i][j]=path[i][k]; } } } }}int main(){ while(cin>>n,n) { memset(map,0,sizeof(map)); memset(d,0,sizeof(d)); int i,j; int a,b; for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { cin>>a; if(a!=-1) map[i][j]=a; else map[i][j]=INT; } } for(i=1;i<=n;i++) cin>>d[i]; floyd();//调用floyd函数 while(cin>>a>>b,!(a==-1&&b==-1)) { printf("From %d to %d :\nPath: ",a,b); if(a==b) //当自己访问自己时经过的点只需输出自己 cout<
<
"; while(path[x][y]!=y)//输出经过的每一个点 { cout<
<<"-->"; x=path[x][y]; } cout<
<
j的最短路径 cout<

 

 

    

 

 

转载于:https://www.cnblogs.com/zgfailmr/archive/2012/09/04/2670971.html

你可能感兴趣的文章
Generating Text with Deep Reinforcement Learning
查看>>
如果你没被WannaCry感染就一定要小心Adylkuzz
查看>>
HR:2017/2018年数据中心驱动400Gbps部署
查看>>
单元测试覆盖工具coverlipse
查看>>
Jmeter分布式部署文档
查看>>
微软打算用DNA存储数据 但成本和速度仍是个大问题
查看>>
使用Java向properties存数据
查看>>
产能过剩的光伏电池,是否还是未来的朝阳产业?
查看>>
如何在SaaS企业及服务市场上站稳脚跟
查看>>
移动端App测试实用指南(下)
查看>>
为什么没有一个软件质量保证的RUP工作流程
查看>>
海尔王淼:智能家居互联互通先解决用户需求
查看>>
商务部:中国将采取一切措施维护光伏企业合法权益
查看>>
MySQL数据库开发必备常识
查看>>
晶科能源力促分布式光伏行业标准制定
查看>>
苏征:大贲科技让酒店更智慧
查看>>
Ascent公司在亚特兰大和多伦多收购数据中心资产
查看>>
linux 安装 node
查看>>
“不劳而获”的数字货币真的存在么?
查看>>
k8s拾遗 - Secret
查看>>