Java问题描述:在听说美国肥胖流行之后,农夫约翰希望他的奶牛能够做更多的运动,因此他为了他的奶牛提交了马拉松申请,马拉松路线包括一系列农场对和它们之间的道路组成的路径。由于约翰希望奶牛尽可能的多运动,他想在地图上找到彼此距离最远的两个农场(距离是根据两个农场之间的道路的总长度来衡量的。)请帮助他确定这对最远的农场之间的距离。 输入格式:第一行是两个以空格符分隔的整数n和m;接下来的第二行到第m+1行,每行包含4个以空格分开的元素x,y,w和d来描述一条道路,其中x和y是一条长度为w的道路相连的两个农场的编号,d是字符N.E.S.或W,表示从x到y的道路的方向。 输出格式:给出最远的一对农场之间距离的整数。 输入样例: 7 6 1 6 13 E 6 3 9 E 3 5 7 S 4 1 3 N 2 4 20 W 4 7 2 S 输出样例: 52

时间: 2023-12-14 11:38:21 浏览: 56
Java代码实现: ```java import java.io.*; import java.util.Arrays; public class Main { static int N = 10010, M = N * 2, idx = 1; static int[] h = new int[N], e = new int[M], w = new int[M], ne = new int[M]; static int n, m, res = 0; static int[] dist = new int[N]; static boolean[] st = new boolean[N]; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String[] line = br.readLine().split(" "); n = Integer.parseInt(line[0]); m = Integer.parseInt(line[1]); Arrays.fill(h, -1); while (m-- > 0) { line = br.readLine().split(" "); int a = Integer.parseInt(line[0]), b = Integer.parseInt(line[1]), c = Integer.parseInt(line[2]); char d = line[3].charAt(0); int distance = getDistance(a, b, c, d); add(a, b, distance); add(b, a, distance); } spfa(); for (int i = 1; i <= n; i++) res = Math.max(res, dist[i]); System.out.println(res); } private static void spfa() { Arrays.fill(dist, -0x3f3f3f); dist[1] = 0; for (int i = h[1]; i != -1; i = ne[i]) dist[e[i]] = w[i]; st[1] = true; for (int i = 0; i < n - 1; i++) { int t = -1; for (int j = 1; j <= n; j++) if (!st[j] && (t == -1 || dist[t] < dist[j])) t = j; st[t] = true; for (int j = h[t]; j != -1; j = ne[j]) { int ver = e[j], distance = w[j]; if (dist[ver] < dist[t] + distance) { dist[ver] = dist[t] + distance; } } } } private static int getDistance(int a, int b, int c, char d) { if (d == 'N') return c; else if (d == 'S') return c; else if (d == 'W') return c; else return c; } private static void add(int a, int b, int c) { e[idx] = b; w[idx] = c; ne[idx] = h[a]; h[a] = idx++; } } ```

相关推荐

最新推荐

recommend-type

国半推出一款多速率串行数字接口(SDI)串行/解串器二合一芯片

高性能模拟信号路径芯片产品供应商美国国家半导体公司(NationalSemiconductorCorporation)宣布推出一款3Gbps的多速率串行数字接口(SDI)串行/解串器二合一芯片,这是该公司一系列专业级及广播用视频芯片的最新型号...
recommend-type

美国Ternion公司Flames.docx

FLAMES是美国Ternion公司开发的用于全方位行为仿真开发和使用的、开放结构的仿真框架,支持武器平台、战术、战役三层仿真开发,支持C/S、HLA分布式仿真。提供装备模型、认知模型、消息模型和环境模型开发框架。主要...
recommend-type

Introduction to Java Programming, Comprehensive Version (10th Edition)

本书是美国阿姆斯特朗大西洋州立大学(Armstrong Atlantic State University)计算机科学系教授梁勇(Y.Daniel Liang)主编的JAVA综合教程。...该书在美国大学Java课程中采用率最高,目前最新版本为第十版。
recommend-type

《美国人工智能倡议首年年度报告》.docx

这份美国国家AI报告从侧面说明了现阶段AI技术对于一个国家的战略意义,谁能在AI方面取得领先,谁就能在21世纪新的一轮国力竞争中脱颖而出。虽然我国与美国在AI技术路线、国情、研发方式上有着许多的不同,但在其他的...
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

解释minorization-maximization (MM) algorithm,并给出matlab代码编写的例子

Minorization-maximization (MM) algorithm是一种常用的优化算法,用于求解非凸问题或含有约束的优化问题。该算法的基本思想是通过构造一个凸下界函数来逼近原问题,然后通过求解凸下界函数的最优解来逼近原问题的最优解。具体步骤如下: 1. 初始化参数 $\theta_0$,设 $k=0$; 2. 构造一个凸下界函数 $Q(\theta|\theta_k)$,使其满足 $Q(\theta_k|\theta_k)=f(\theta_k)$; 3. 求解 $Q(\theta|\theta_k)$ 的最优值 $\theta_{k+1}=\arg\min_\theta Q(
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。
recommend-type

"互动学习:行动中的多样性与论文攻读经历"

多样性她- 事实上SCI NCES你的时间表ECOLEDO C Tora SC和NCESPOUR l’Ingén学习互动,互动学习以行动为中心的强化学习学会互动,互动学习,以行动为中心的强化学习计算机科学博士论文于2021年9月28日在Villeneuve d'Asq公开支持马修·瑟林评审团主席法布里斯·勒菲弗尔阿维尼翁大学教授论文指导奥利维尔·皮耶昆谷歌研究教授:智囊团论文联合主任菲利普·普雷教授,大学。里尔/CRISTAL/因里亚报告员奥利维耶·西格德索邦大学报告员卢多维奇·德诺耶教授,Facebook /索邦大学审查员越南圣迈IMT Atlantic高级讲师邀请弗洛里安·斯特鲁布博士,Deepmind对于那些及时看到自己错误的人...3谢谢你首先,我要感谢我的两位博士生导师Olivier和Philippe。奥利维尔,"站在巨人的肩膀上"这句话对你来说完全有意义了。从科学上讲,你知道在这篇论文的(许多)错误中,你是我可以依