百练 兔子与樱花(floyd+打印路径)
来源:互联网 发布:个人网络循环贷款利率 编辑:程序博客网 时间:2024/05/21 20:28
兔子与樱花
- 查看
- 提交
- 统计
- 提问
- 总时间限制:
- 1000ms
- 内存限制:
- 65535kB
- 描述
很久很久之前,森林里住着一群兔子。有一天,兔子们希望去赏樱花,但当他们到了上野公园门口却忘记了带地图。现在兔子们想求助于你来帮他们找到公园里的最短路。
- 输入
- 输入分为三个部分。
第一个部分有P+1行(P<30),第一行为一个整数P,之后的P行表示上野公园的地点。
第二个部分有Q+1行(Q<50),第一行为一个整数Q,之后的Q行每行分别为两个字符串与一个整数,表示这两点有直线的道路,并显示二者之间的矩离(单位为米)。
第三个部分有R+1行(R<20),第一行为一个整数R,之后的R行每行为两个字符串,表示需要求的路线。 - 输出
- 输出有R行,分别表示每个路线最短的走法。其中两个点之间,用->(矩离)->相隔。
- 样例输入
6GinzaSensoujiShinjukugyoenUenokouenYoyogikouenMeijishinguu6Ginza Sensouji 80Shinjukugyoen Sensouji 40Ginza Uenokouen 35Uenokouen Shinjukugyoen 85Sensouji Meijishinguu 60Meijishinguu Yoyogikouen 352Uenokouen YoyogikouenMeijishinguu Meijishinguu
- 样例输出
Uenokouen->(35)->Ginza->(80)->Sensouji->(60)->Meijishinguu->(35)->Yoyogikouen
Meijishinguu
tips:1这道题目的数据量比较小,直接套用floyd即可。
2.关键的打印路径部分可以使用一个step[i][j]数组代表从定点i到顶点j的最短路中经过的第一个顶点
3.没有找到判题oj各位小伙伴知道的话,留言下啊
#include<iostream>#include<cstring>#include<algorithm>#include<map>using namespace std;int n,m,k;string a[66];int step[66][66],g[66][66];map<string,int>mp;const int inf=0x3f3f3f3f;int s,e;void init(){for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){g[i][j]=(i==j?0:inf);step[i][j]=j;}} } void floyd() { for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { for(int k=1;k<=n;k++) { if(g[j][k]>g[j][i]+g[i][k]) { g[j][k]=g[j][i]+g[i][k]; step[j][k]=step[j][i]; } } } } }void display(){cout<<a[s];int k=s;while(k!=e){cout<<"->("<<g[k][step[k][e]]<<")->"<<a[step[k][e]];k=step[k][e];}cout<<endl;}int main(){cin>>n;for(int i=1;i<=n;i++){cin>>a[i];mp[a[i]]=i;}init();cin>>m;for(int i=1;i<=m;i++){string s1,s2;int d;cin>>s1>>s2>>d;g[mp[s1]][mp[s2]]=g[mp[s2]][mp[s1]]=d; } floyd();cin>>k;while(k--){string s1,s2;cin>>s1>>s2;s=mp[s1];e=mp[s2];display();}return 0;}
阅读全文
0 0
- 百练 兔子与樱花(floyd+打印路径)
- 兔子与樱花(floyd+打印路径)
- 兔子与樱花(map+最短路+记录路径)
- 【HEOI】兔子与樱花
- [HEOI2015]兔子与樱花
- 【Bzoj4027】兔子与樱花
- 兔子与樱花
- 兔子与樱花---每对结点的最短路径
- T001:兔子与樱花 最短路及路径
- bzoj4027【heoi2015】兔子与樱花
- 【HEOI2015】【BZOJ4027】兔子与樱花
- bzoj4027: [HEOI2015]兔子与樱花
- BZOJ4027: [HEOI2015]兔子与樱花
- 4027: [HEOI2015]兔子与樱花
- 【bzoj4027】[HEOI2015]兔子与樱花
- BZOJ4027: [HEOI2015]兔子与樱花
- 4027: [HEOI2015]兔子与樱花
- BZOJ4027 [HEOI2015]兔子与樱花
- bzoj4082 [Wf2014]Surveillance 倍增
- Python的enumerate 枚举函数如何使用?
- Python的编码声明 # -*- coding:utf-8 -*-
- 最小生成树 kruskal算法 C++实现
- 接口回调
- 百练 兔子与樱花(floyd+打印路径)
- 文章标题编写一个在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是100的程序,并输出所有的可能性。
- 58笔试题
- intel MKL GEMM
- 《学习opencv》笔记——矩阵和图像操作——cvMax,cvMaxS,cvMerge,cvMin and cvMinS
- 前缀、中缀、后缀表达式
- 自然语言处理---深度学习在情感分析中的应用
- 金蝶K3销售订单客户选择页面禁止显示未审核客户
- 单片机电子电路中常用的负压产生电路