当前位置: 首页 > news >正文

华为od-C卷200分题目6 - 5G 网络建设

华为od-C卷200分题目6 - 5G 网络建设

题目描述
现需要在某城市进行 5G 网络建设,已经选取 N 个地点设置 5G 基站,编号固定为 1 到 N,接下来需要各个基站之间使用光纤进行连接以确保基站能互联互通,不同基站之间架设光纤的成本各不相同,且有些节点之间已经存在光纤相连,请你设计算法,计算出能联通这些基站的最小成本是多少。

注意,基站的联通具有传递性,即基站 A 与基站 B 架设了光纤基站 B 与基站 C 也架设了光纤,则基站 A 与基站 C 视为可以互相联通

输入
第一行输入表示基站的个数 N,其中 0 < N <= 20

第二行输入表示具备光纤直连条件的基站对的数目 M,其中 0 < M < N * (N - 1) / 2

第三行开始连续输入 M 行数据,格式为 X Y Z P,其中 X Y 表示基站的编号,0 < X <= N, 0 < Y <= N 且 X 不等于 Y, Z 表示在 X Y 之间架设光纤的成本,其中 0 < Z < 100,P 表示是否已存在光纤连接,0 表示未连接, 1 表示已连接。

输出
如果给定条件,可以建设成功互联互通的 5G 网络,则输出最小的建设成本,

如果给定条件,无法建设成功互联互通的 5G 网络,则输出-1

样例输入 复制
3
3
1 2 3 0
1 3 1 0
2 3 5 0
样例输出 复制
4
提示
只需要在 1,2 以及 2,3 基站之间铺设光纤,其成本为 3+1=4

import java.util.*;class Point {int parent;int size = 1;int cost = 0;public Point(int parent) {this.parent = parent;}
}public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int m = sc.nextInt();int x, y, z, p;Point[] points = new Point[n + 1];for (int i = 1; i < points.length; i++) {points[i] = new Point(i);}ArrayList<int[]> list = new ArrayList<>();HashSet<Integer> set = new HashSet<>();for (int i = 0; i < m; i++) {x = sc.nextInt();y = sc.nextInt();z = sc.nextInt();p = sc.nextInt();set.add(x);set.add(y);if (p == 1) {add(points, x, y, 0);} else {list.add(new int[]{x, y, z});}}Collections.sort(list, Comparator.comparingInt(o -> o[2]));for (int[] ints : list) {add(points, ints[0], ints[1], ints[2]);}int parent = -1;for (int i = 1; i <= n; i++) {if (parent == -1) {parent = getParent(points, i);}if (parent != getParent(points, i)) {System.out.println(-1);return;}}System.out.println(points[parent].cost);}private static void add(Point[] points, int x, int y, int cost) {int parentX = getParent(points, x);int parentY = getParent(points, y);if (parentY == parentX) {return;}if (points[parentY].size <= points[parentX].size) {points[parentY].parent = points[parentX].parent;points[parentX].size += points[parentY].size;points[parentX].cost += cost + points[parentY].cost;} else {points[parentX].parent = points[parentY].parent;points[parentY].size += points[parentX].size;points[parentY].cost += cost + points[parentX].cost;}}public static int getParent(Point[] points, int index) {while (index != points[index].parent) {index = points[index].parent;}return index;}
}

思路:主要就是并查集的思想,不断更新父节点,比较时比较size,哪个集合多哪个就作为父,先排序,按照成本排序,如果已经连接则跳过

相关文章:

华为od-C卷200分题目6 - 5G 网络建设

华为od-C卷200分题目6 - 5G 网络建设 题目描述 现需要在某城市进行 5G 网络建设&#xff0c;已经选取 N 个地点设置 5G 基站&#xff0c;编号固定为 1 到 N&#xff0c;接下来需要各个基站之间使用光纤进行连接以确保基站能互联互通&#xff0c;不同基站之间架设光纤的成本各不…...

步进电机(STM32+28BYJ-48)

一、简介 步进电动机&#xff08;stepping motor&#xff09;把电脉冲信号变换成角位移以控制转子转动的执行机构。在自动控制装置中作为执行器。每输入一个脉冲信号&#xff0c;步进电动机前进一步&#xff0c;故又称脉冲电动机。步进电动机多用于数字式计算机的外部设备&…...

Node.js介绍 , 安装与使用

1.Node.js 1 什么是Node.js 官网&#xff1a;https://nodejs.org/zh-cn/ 中文学习网&#xff1a;http://nodejs.cn/learn1.Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。 2.前端的底层 html…...

JavaEE初阶-网络原理1

文章目录 前言一、UDP报头二、UDP校验和2.1 CRC2.2 md5 前言 学习一个网络协议&#xff0c;最主要就是学习的报文格式&#xff0c;对于UDP来说&#xff0c;应用层数据到达UDP之后&#xff0c;会给应用层数据报前面加上UDP报头。 UDP数据报UDP包头载荷 一、UDP报头 如上图UDP的…...

leetcode秋招冲刺 (专题16--18)

专题16&#xff1a;分治 题目169&#xff1a;多数元素&#xff08;YES&#xff09; 解题思路&#xff1a;使用哈希表可以统计出现次数的性质&#xff0c;直接统计就行。 给定一个大小为 n 的数组 nums &#xff0c;返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊…...

学懂C#编程:实用方法——string字符串指定连接符拼接之 string.Join 的详细用法

在C#中&#xff0c;string.Join 方法用于将一个字符串数组或集合中的元素连接成一个单一的字符串&#xff0c;并在每个元素之间插入指定的分隔符。这个方法非常有用&#xff0c;特别是在需要将多个字符串合并成一个字符串时。以下是 string.Join 方法的详细用法&#xff1a; 方…...

Javascript常见数据结构和设计模式

在JavaScript中&#xff0c;常见的数据结构包括两大类&#xff1a;原始数据类型&#xff08;Primitive Types&#xff09;和对象类型&#xff08;Object Types&#xff09;。对象类型又可以进一步细分为多种内置对象、数组、函数等。下面是一些JavaScript中常见的数据结构&…...

【ChatGPT】全面解析 ChatGPT:从起源到未来

ChatGPT 是由 OpenAI 开发的一个基于 GPT&#xff08;Generative Pre-training Transformer&#xff09;架构的聊天机器人。通过自然语言处理&#xff08;NLP&#xff09;技术&#xff0c;ChatGPT 能够理解和生成语言&#xff0c;与人类进行对话。本文将深入探讨其起源、发展、…...

html+css+js贪吃蛇游戏

贪吃蛇游戏&#x1f579;四个按钮控制方向&#x1f3ae; 源代码在图片后面 点赞❤️关注&#x1f64f;收藏⭐️ 互粉必回&#x1f64f;&#x1f64f;&#x1f60d;&#x1f60d;&#x1f60d; 源代码&#x1f4df; <!DOCTYPE html> <html lang"en"&…...

新手必学:掌握Excel中这些常用公式,轻松提升数据处理能力

各位同学好&#xff0c;今天和大家来分享几个常用函数公式的典型用法。 1、提取指定条件的不重复名单 如下图所示&#xff0c;某公司课程比赛&#xff0c;同一员工有多个比赛项目。希望从左侧的列表中&#xff0c;提取出财务部的参赛人员名单。F2单元格输入以下公式&#xff0…...

经济寒冬:竞品凶猛,你的产品如何求生?

那些年曾被竞品干掉的产品 1997年到2010年左右是国内互联网行业的快速发展和多元化发展的时期&#xff0c;这一时期涌现出来一大批优秀的产品&#xff0c;市场竞争越来越激烈。苹果 在20 世纪 80 年代&#xff0c;乔布斯的苹果电脑&#xff0c;在当时可是PC行业的老大&#xf…...

信号量——Linux并发之魂

欢迎来到 破晓的历程的 博客 引言 今天&#xff0c;我们继续学习Linux线程本分&#xff0c;在Linux条件变量中&#xff0c;我们对条件变量的做了详细的说明&#xff0c;今天我们要利用条件变量来引出我们的另一个话题——信号量内容的学习。 1.复习条件变量 在上一期博客中&…...

自动驾驶中的逆透视变换(Inverse Perspective Mapping,IPM)详解

前言 IPM(Inverse Perspective Mapping,逆透视变换)图的历史可以追溯到计算机视觉和图像处理领域的发展。逆透视变换是一种用于消除图像中透视效应的技术,使得原本由于透视产生的形变得以纠正,进而更准确地描述和理解图像中的场景。比如在行车中的车道线检测,泊车中的常见…...

Python地震波逆问题解构算法复杂信号分析

&#x1f3af;要点 &#x1f3af;时域、时频域以及时间和频率相关联偏振特性分析三种算法 | &#x1f3af;时域波参数估计算法 | &#x1f3af;机器学习模型波形指纹分析算法 | &#x1f3af;色散曲线和频率相关波分析算法 | &#x1f3af;动态倾斜校正算法 | &#x1f3af;声…...

C语言 -- 深入理解指针(二)

C语言 -- 深入理解指针&#xff08;二&#xff09; 1. 数组名的理解2. 使用指针访问数组3. 一维数组传参的本质4. 冒泡排序5. 二级指针6. 指针数组7. 指针数组模拟二维数组8. 字符指针变量9. 数组指针变量2.1数组指针变量是什么&#xff1f;2.2 数组指针变量怎么初始化 10. 二维…...

HTTP协议详解

HTTP协议详解 一、HTTP协议概述二、网络基础与HTTP2.1 TCP/IP协议2.2 发送HTTP请求过程2.3 HTTP请求的组成部分 三、HTTP报文HTTP请求报文HTTP响应报文 结语 一、HTTP协议概述 HTTP&#xff0c;即超文本传输协议&#xff08;Hypertext Transfer Protocol&#xff09;&#xff…...

一年时间业绩增长2倍,茅台保健酒业公司在川销售的“三板斧”

执笔 | 尼 奥 编辑 | 扬 灵 作为土地面积全国第5、人口总数全国第3、GDP全国第6的产酒、销酒大省&#xff0c;四川酒类消费总额已达800亿元&#xff0c;其中白酒市场规模达到500亿元。 近年来&#xff0c;随着省外名酒提升对四川市场重视&#xff0c;其市场份额也从20年前的3%…...

土豆炒肉做法

菜单&#xff1a;土豆、葱、铁辣子、纯瘦肉、淀粉、生抽、酱油、刀、案板、十三香、盐巴、擦板 流程&#xff1a; 洗土豆&#xff0c;削皮&#xff0c;擦成条&#xff0c;用凉水过滤两遍淀粉&#xff0c;顺便放个燥里洗肉&#xff0c;切成条&#xff0c;按照生抽、酱油、淀粉、…...

VPS拨号服务器:独享的高效与安全

在当今互联网高速发展的时代&#xff0c;虚拟私人服务器&#xff08;VPS&#xff09;已成为许多企业和个人用户托管网站、应用程序的首选。特别是带有拨号功能的VPS服务器&#xff0c;以其独特的优势受到广泛关注。本文将深入探讨VPS拨号服务器的独享特性&#xff0c;以及它如何…...

网络安全设备——防火墙

网络安全设备防火墙是一种用来加强网络之间访问控制的特殊网络互联设备。以下是对防火墙的详细解释&#xff1a; 一、定义与基本概念 定义&#xff1a;防火墙是指设置在不同网络&#xff08;如可信任的企业内部网和不可信的公共网&#xff09;或网络安全域之间的一系列部件的…...

Zynq Linux FPGA Manager实战:5分钟搞定PL配置(含bit转bin避坑指南)

Zynq Linux FPGA Manager实战&#xff1a;5分钟搞定PL配置&#xff08;含bit转bin避坑指南&#xff09; 第一次在Zynq开发板上尝试配置PL逻辑时&#xff0c;我盯着Vivado生成的.bit文件发愁——官方文档里提到的PCAP、ICAP协议像天书一样&#xff0c;而网上各种教程要么步骤不全…...

颠覆体验:Mac鼠标滚动优化完全指南——从卡顿到丝滑的蜕变之路

颠覆体验&#xff1a;Mac鼠标滚动优化完全指南——从卡顿到丝滑的蜕变之路 【免费下载链接】Mos 一个用于在 macOS 上平滑你的鼠标滚动效果或单独设置滚动方向的小工具, 让你的滚轮爽如触控板 | A lightweight tool used to smooth scrolling and set scroll direction indepen…...

零基础鸿蒙应用开发第二十二节:类的继承与多态入门

【学习目标】 理解继承的核心意义&#xff0c;掌握ArkTS中extends关键字的使用规则&#xff0c;区分“单继承”特性在鸿蒙开发中的适配场景&#xff1b;掌握super关键字的核心作用&#xff08;调用父类构造函数、调用父类方法&#xff09;&#xff0c;规避继承中的常见语法错误…...

电子工程师必看:MOS管、三极管、IGBT选型指南(附实际电路设计案例)

电子工程师必看&#xff1a;MOS管、三极管、IGBT选型指南&#xff08;附实际电路设计案例&#xff09; 在电子设计的世界里&#xff0c;选择合适的功率开关器件往往决定着整个电路的成败。作为一名电子工程师&#xff0c;我曾在多个项目中因为选型不当而付出惨痛代价——从简单…...

用噪音打破听觉恐怖谷:RTE 开发者社区发布 RealNoise™ TTS:全球首个原生合成动态声场的语音大模型

在过去的几年里&#xff0c;语音 AI 行业的内卷方向始终如一&#xff1a;更高的采样率、更低的延迟、更纯净的音质。我们不断训练模型去剔除哪怕最微小的背景杂音&#xff0c;追求实验室级别的完美信噪比&#xff08;SNR&#xff09;。 然而&#xff0c;当我们在真实的实时互动…...

Blueman:Linux系统蓝牙管理的高效解决方案

Blueman&#xff1a;Linux系统蓝牙管理的高效解决方案 【免费下载链接】blueman Blueman is a GTK Bluetooth Manager 项目地址: https://gitcode.com/gh_mirrors/bl/blueman 在Linux桌面环境中&#xff0c;蓝牙设备管理长期面临着易用性与功能性难以兼顾的挑战。Bluema…...

Oracle 身份证号码解析与年龄计算实战指南

1. 身份证号码解析基础 身份证号码作为个人身份标识&#xff0c;蕴含着丰富的个人信息。在Oracle数据库中处理身份证数据时&#xff0c;首先需要理解其编码规则。我国现行18位身份证号码由6位地区码、8位出生日期、3位顺序码和1位校验码组成。其中第7到14位就是关键的出生日期信…...

开源硬件监控新选择:LibreHardwareMonitor全方位解析与应用指南

开源硬件监控新选择&#xff1a;LibreHardwareMonitor全方位解析与应用指南 【免费下载链接】LibreHardwareMonitor Libre Hardware Monitor is free software that can monitor the temperature sensors, fan speeds, voltages, load and clock speeds of your computer. 项…...

树莓派与STM32串口通信实战:从配置到调试全流程解析

1. 硬件准备与环境搭建 第一次尝试用树莓派和STM32做串口通信时&#xff0c;我对着桌上堆满的零件发愁&#xff1a;到底哪些线该接哪里&#xff1f;后来发现其实核心部件就三样&#xff1a;树莓派&#xff08;推荐4B型号&#xff09;、STM32开发板&#xff08;我用的是F103C8T6…...

一键部署+可视化训练:Llama Factory让大模型定制如此简单

一键部署可视化训练&#xff1a;Llama Factory让大模型定制如此简单 1. 为什么选择Llama Factory&#xff1f; 大模型微调一直是AI开发者面临的技术挑战之一。传统方法需要编写大量代码、处理复杂的环境配置&#xff0c;并且对硬件资源要求极高。Llama Factory的出现彻底改变…...