http://www.bailian.openjudge.cn/practice/4083/
总时间限制: 1000ms 内存限制: 65536kB

描述

“红楼飞雪,一时英杰……”耳边传来了那熟悉的歌声。而这,只怕是我最后一次听到这个声音了。

想当年,我们曾经怀着豪情壮志,许下心愿,走过静园,走过一体,走过未名湖畔的每个角落。

想当年,我们也曾慷慨高歌,瞻仰民主与科学,瞻仰博雅塔顶,那百年之前的遗韵。

没错,我爱北大,我爱这个校园。

然而,从当我们穿上学位服的那一刻起,这个校园,就再也不属于我。它只属于往事,属于我的回忆。

没错,这,是我在北大的最后一日。此时,此景,此生,此世,将刻骨难忘。

再也没有了图书馆自习的各种纷纭,再也没有了运动场上的挥汗如雨,有的,只是心中永远的不舍,与牵挂。

夜,已深。人,却不愿离去。天边有一颗流星划过,是那般静,宁谧。

忍不住不回头,我的眼边,有泪光,划过。

这时候,突然有一位路人甲从你身旁出现,问你:从XX到XX怎么走?

索性,就让我再爱你一次。因为,北大永远在你心中。北大的地图,永远在你的心中。

轻手挥扬,不带走一分云彩。

输入

输入分为三个部分。
第一个部分有P+1行,第一行为一个整数P,之后的P行表示北大的地点。地点长度不超过20个字符。
第二个部分有Q+1行,第一行为一个整数Q,之后的Q行每行分别为两个字符串与一个整数,表示这两点有直线的道路,并显示二者之间的矩离(单位为米)。
第三个部分有R+1行,第一行为一个整数R,之后的R行每行为两个字符串,表示需要求的路线。
p<=30,Q<=50,R<=20

输出

输出有R行,分别表示每个路线最短的走法。其中两个点之间,用->(矩离)->相隔。

样例输入

6
XueYiShiTang
CanYinZhongXin
XueWuShiTang
XueYiXiaoBaiFang
BaiNianJiangTang
GongHangQuKuanJi
6
XueYiShiTang CanYinZhongXin 80
XueWuShiTang CanYinZhongXin 40
XueYiShiTang XueYiXiaoBaiFang 35
XueYiXiaoBaiFang XueWuShiTang 85
CanYinZhongXin GongHangQuKuanJi 60
GongHangQuKuanJi BaiNianJiangTang 35
2
XueYiXiaoBaiFang BaiNianJiangTang
GongHangQuKuanJi GongHangQuKuanJi

样例输出

XueYiXiaoBaiFang->(35)->XueYiShiTang->(80)->CanYinZhongXin->(60)->GongHangQuKuanJi->(35)->BaiNianJiangTang
GongHangQuKuanJi

问题

多源最短路。使用Floyd算法。
注意两点间可能有不止一条边。

题目有两个难点部分:

  1. Floyd求最短路
  2. 合理化输出路径。

所以在作Floyd的时候,要定义路径和距离的两个数组。距离是Floyd过程中的限制量,一个很大的距离已经可以作为可达性的表征,所以对路径的初始化没有那么关键。

在输出的时候路径就作为主要因素了,但是路径信息已经存入,所以也就不存在过多的判断问题。可达性由距离的侧面描述转化到路径的直接描述上。

可达性的概念是重要的,第一次WA就是如此:
这相当于默认任意可达。

    memset(d, 0x3f, sizeof d);for (int i = 0; i < n; i++){d[i][i] = 0;for (int j = 0; j < n; j++)p[i][j] = i;}

通过和这篇文章的对比,发现问题在于路径更新。

百练4083我爱北大 解析相关推荐

  1. 百炼:4083:我爱北大

    4083:我爱北大 总时间限制:  1000ms  内存限制:  65536kB 描述 "红楼飞雪,一时英杰--"耳边传来了那熟悉的歌声.而这,只怕是我最后一次听到这个声音了. 想 ...

  2. 北大OJ百练——4075:矩阵旋转(C语言)

    百练的这道题很简单,通过率也达到了86%,所以我也就来贴个代码了...下面是题目: 不过还是说一下我的思路: 这道题对一个新来说,可能是会和矩阵的转置相混淆,这题并不是要我们去求矩阵的转置. 这题,我 ...

  3. 北大培训课动态规划----神奇的口袋(百练2755)

    北京大学暑期课<ACM/ICPC竞赛训练> ppt摘取 什么是动态规划? ●递归到动规的一般转化方法  递归函数有n个参数,就定义一个n维的数组,数组 的下标是递归函数参数的取值范围,数组 ...

  4. 百练1002:方便记忆的电话号码(C++实现,北大软微)

    百练1002:方便记忆的电话号码 1-描述 英文字母(除Q和Z外)和电话号码存在着对应关系,如下所示:A,B,C -> 2D,E,F -> 3G,H,I -> 4J,K,L -> ...

  5. 百练,4103,踩方格

    百练,4103,踩方格 普通做法:(也可以找规律) #include #include//要调用memset函数,头文件 using namespace std; int visited[50][50 ...

  6. 威佐夫博弈:百练OJ:1067:取石子游戏

    威佐夫博弈(Wythoff's game):有两堆各若干个物品,两个人轮流从任一堆取至少一个或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜. 百练OJ:1067:取石子游戏 ...

  7. 百练OJ:4003:十六进制转十进制(python三行代码实现)

    题目链接:百练OJ:4003 描述 将十六进制数转换成十进制数 输入 第一行有一个整数T,表示共有T组数据 接下来T行,每一行为一个16进制无符号正整数,位数不超过8位,数中的a-f均为大写字母,数前 ...

  8. 百练OJ:2742:统计字符数

    题目链接: 百练OJ:2742:统计字符数 描述:判断一个由a-z这26个字符组成的字符串中哪个字符出现的次数最多 输入:第1行是测试数据的组数n,每组测试数据占1行,是一个由a-z这26个字符组成的 ...

  9. java函数实现进制转换与java实现八进制到十进制的转换(百练OJ:2735:八进制到十进制)

    java进制转换函数介绍:Java二进制.八进制.十进制.十六进制相互转换: 二进制转十进制 Integer.parseInt("0110", 2); 八进制转十进制 Intege ...

  10. 百练OJ:2973:Skew数

    题目链接: 百练OJ:2973:Skew数 描述:在 skew binary表示中, 第 k 位的值xk表示xk*(2k+1-1). 每个位上的可能数字是0 或 1,最后面一个非零位可以是2, 例如, ...

最新文章

  1. 【青少年编程】【四级】数字之和
  2. java 通用取得 系统硬件信息及 jvm 信息的 jar 包 oshi-core
  3. 常微分方程数值解:欧拉公式
  4. 【语法解释】init
  5. MindManager: Draw your own MindMap!
  6. 在.NET Core中用最原生的方式读取Nacos的配置
  7. Not so Mobile(二叉树递归输入同时建树){天平}
  8. 1859. 将句子排序
  9. pso算法c++语言代码,一C++PSO(PSO)算法
  10. 关于企业应用SAP成本管理模式与方法的一些思考
  11. matlab2c使用c++实现matlab函数系列教程-asin函数
  12. python适用于哪些芯片_这些鲜为人知的Python功能,你值得拥有!
  13. [笔记]3.软件代码中的BUG问题的一些记录
  14. 广州大学机器学习与数据挖掘实验一
  15. import cv2
  16. opencv2.4.10配置vs2010旗舰版过程与遇到问题的解决
  17. 调停者模式 java_《JAVA与模式》之调停者模式
  18. python视频教程大全集下载啦
  19. SPSS实现系统聚类
  20. SVN上文件出现左侧黄色箭头右侧绿色箭头的双向箭头

热门文章

  1. 请选择正确html,请选择可以使单元格中的内容进行左对齐的正确HTML标记(      )。...
  2. 对于程序员而言,是否金三银四才是最佳跳槽季
  3. Netty之编解码器框架
  4. 求有10个整型元素的数组中最大元素及其下标。
  5. 第七章、Tiny4412 U-BOOT移植七 DDR内存配置
  6. Mac mini 2018 win10 外接显卡终极教程
  7. Mac操作指南:Mac显示器颜色不正如何调节?
  8. 发布项目,Upload AppStore解决ITMS-90096问题
  9. 克莱斯勒等公司宣布召回缺陷汽车
  10. kali linux安全牛教程,Kali Linux渗透测试(安全牛)最新完整版教程160G