兔子与樱花

news/2024/11/20 1:47:39/

【问题描述】
很久很久之前,森林里住着一群兔子。有一天,兔子们希望去赏樱花,但当他们到了上野公园门口却忘记了带地图。现在兔子们想求助于你来帮他们找到公园里的最短路。
【输入形式】
输入分为三个部分。
第一个部分有P+1行(P<30),第一行为一个整数P,之后的P行表示上野公园的地点。
第二个部分有Q+1行(Q<50),第一行为一个整数Q,之后的Q行每行分别为两个字符串与一个整数,表示这两点有直线的道路,并显示二者之间的矩离(单位为米)。
第三个部分有R+1行(R<20),第一行为一个整数R,之后的R行每行为两个字符串,表示需要求的路线。
【输出形式】
输出有R行,分别表示每个路线最短的走法。其中两个点之间,用->(矩离)->相隔。
【样例输入】
6
Ginza
Sensouji
Shinjukugyoen
Uenokouen
Yoyogikouen
Meijishinguu
6
Ginza Sensouji 80
Shinjukugyoen Sensouji 40
Ginza Uenokouen 35
Uenokouen Shinjukugyoen 85
Sensouji Meijishinguu 60
Meijishinguu Yoyogikouen 35
2
Uenokouen Yoyogikouen
Meijishinguu Meijishinguu
【样例输出】
Uenokouen->(35)->Ginza->(80)->Sensouji->(60)->Meijishinguu->(35)->Yoyogikouen
Meijishinguu
【样例说明】
【评分标准】

#include<iostream>
#include<map>
#include<cstdio>
using namespace std;
map<string,int>map1;
map<int,string>map2;
string point_name;
string point_name_1;
int point_number;
int point_path_number;
int point_path;
int point_path_question;
int point_number_1;
int point_number_2;//floyd算法处理后找最短路径 
void find(int a,int b,int c,int arr[30][30],int arr_next[30][30]){//更新距离和后元素数组 floy for(int k = 0;k<c;k++){for(int i = 0;i<c;i++){for(int j = 0;j<c;j++){if(arr[i][j]>arr[i][k]+arr[k][j]){arr[i][j] = arr[i][k] + arr[k][j];arr_next[i][j] = arr_next[i][k];}}}}int k = arr_next[a][b];if(a!=b){cout<<map2[a]<<"->("<<arr[a][k]<<")->";while(k!=b){cout<<map2[k]<<"->("<<arr[k][arr_next[k][b]]<<")->";k = arr_next[k][b];}}cout<<map2[b]<<endl;
}
int main(){//构建节点与标号的字典序 cin>>point_number;for(int i = 0;i<point_number;i++){cin>>point_name;map1[point_name] = i;map2[i] = point_name;}//构建两点之间路径的数组 cin>>point_path_number;int path[30][30];for(int i = 0;i<point_number;i++){for(int j = 0;j<point_number;j++){path[i][j] = 10000;}}//自己到自己的路径为零 for(int i = 0;i<point_number;i++){path[i][i] = 0;}//构建一个路径到另一个路径的中间点 int arr_next[30][30];for(int i = 0;i<point_number;i++){for(int j = 0;j<point_number;j++){arr_next[i][j] = j;}}//完善已知的两点之间的路径 for(int i = 0;i<point_path_number;i++){cin>>point_name;cin>>point_name_1;cin>>point_path;path[map1[point_name]][map1[point_name_1]] = path[map1[point_name_1]][map1[point_name]] = point_path;}//由问题类路径的起始点求出对应编号回带。 cin>>point_path_question;int question[10][2];for(int i = 0;i<point_path_question;i++){cin>>point_name;cin>>point_name_1;point_number_1 = map1[point_name];point_number_2 = map1[point_name_1];question[i][0] = point_number_1;question[i][1] = point_number_2; }for(int i = 0;i<point_path_question;i++){find(question[i][0],question[i][1],point_number,path,arr_next);}return 0;
}

菜鸡操作,中间变量设置的有点多,请自行斟酌修改。主要思想是佛洛依德算法,下一步更新狄杰斯科拉算法,还请各位前辈指教。


http://www.ppmy.cn/news/911873.html

相关文章

文件IO_复制文件描述符(附Linux-5.15.10内核源码分析)

目录 1.文件描述符复制简介 2.dup函数原型 2.1 dup函数 2.2 dup函数工作原理 2.3 dup函数内核源码分析 2.4 dup函数示例代码 3.dup2函数原型 3.1 dup2函数 3.2 dup2函数工作原理 3.3 dup2函数内核源码分析 3.4 dup2函数示例代码 4.dup3函数原型 4.1 dup3函数 4.2…

消息推送(websocket)集群化解决方案

目录 需求分析解决方案实现步骤架构图配置websocket请求地址配置websocket连接前置和连接关闭监听配置websocket处理程序配置redis交换机配置redis订阅监听配置redis发布监听需求分析 及时信息传递:消息推送功能能够确保网站向用户发送及时的重要信息,包括新闻更新、促销活动…

【游戏日记】【ipad】flower 花

2020/9/12 这几天连着重温了光遇&#xff0c;又玩了风之旅人和花&#xff0c;不得不说TGC很注重 场景 和 音乐&#xff0c;其细节处理方面非常到位。 但 花 的问题也挺多&#xff0c; 比如移动速度难以掌控&#xff0c; 容易晕镜头&#xff0c; 游戏指引也是个问题&#xff0c;…

ipad pythonista_iPad编程软件推荐(一) —— Pythonista 3

Python篇 —— Pythonista 官网介绍:适用于iOS的完整Python IDE Pythonista是用于iPad或iPhone上编写python脚本的完整的开发环境。其中包括许多示例—从游戏和动画到绘图,图像处理,自定义用户界面和自动化脚本。除了功能强大的标准库外,Pythonista还提供了广泛的支持可用于…

甲基丙烯酸甲酯由EA SPORTS™iPad的游戏下载

在App Store上最大量真实的格斗游戏&#xff01; 拥有超过20真正像兰迪女装&#xff0c;费多尔Emelianenko&#xff0c;肯三叶草MMA战士... ...一个深战斗机定制...作出最大限度的视网膜显示和卓越的视觉效果... ...体验真正的混合武术为iPhone 和iPod touch的游戏生涯模式 - 甲…

android电视投影ipad,【沙发管家】苹果手机,,iPad连接安卓智能电视投屏方法

原标题&#xff1a;【沙发管家】苹果手机,&#xff0c;iPad连接安卓智能电视投屏方法 现在很多人对于安卓智能电视的投屏功能已经非常熟悉&#xff0c;使用安卓手机的用户&#xff0c;有很多办法可以直接连接电视进行投屏&#xff0c;但是&#xff0c;使用苹果设备直连安卓智能…

ipad电池饿死激活方法_询问操作方法:iPad电池寿命,批量调整照片大小以及同步大量音乐收藏...

ipad电池饿死激活方法 Christmas was good to many of you and now you’ve got all sorts of tech questions related to your holiday spoils. Come on in and we’ll clear up how to squeeze more life out of your iPad, resize all those photos, and sync massive music…

2011年度10大iPad游戏

iPad常常被认为是放大版的iPhone&#xff0c;但作为游戏平台来说&#xff0c;由于大小不同&#xff0c;导致用户操作两者的习惯、以及对两个平台的消费习惯等各个方面都不同&#xff0c;也使两个平台上的游戏其实可以是完全不同的发展方向。今天介绍的iPad年度十大&#xff0c;…