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

OD_2024_C卷_200分_7、5G网络建设【JAVA】【最小生成树】

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

package odjava;import java.util.Scanner;public class 七_5G网络建设 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt(); // 基站数量(节点数)int m = sc.nextInt(); // 基站对数量(边数)// 邻接矩阵int[][] graph = new int[n + 1][n + 1];for (int i = 1; i <= n; i++) {for (int j = 1; j <= n; j++) {// 初始化默认各点之间互不联通,即i-j边权无限大graph[i][j] = Integer.MAX_VALUE;}}// 读取输入的基站对信息,并构建邻接矩阵for (int i = 0; i < m; i++) {int x = sc.nextInt(); // 基站1int y = sc.nextInt(); // 基站2int z = sc.nextInt(); // 基站间的距离int p = sc.nextInt(); // 是否已经联通的标志,0表示未联通,1表示已联通if (p == 0) {// x-y边权为zgraph[x][y] = z;graph[y][x] = z;} else {// 对应已经联通的两点,可以理解为边权为0graph[x][y] = 0;graph[y][x] = 0;}}// 输出最小生成树的边权和System.out.println(prim(graph, n));}/*** 使用 Prim 算法计算最小生成树的边权和** @param graph 邻接矩阵,表示图的连接关系* @param n     基站数量(节点数)* @return 最小生成树的边权和,如果无法形成最小生成树,则返回 -1*/public static int prim(int[][] graph, int n) {// 记录最小生成树的边权和int minWeight = 0;// inTree[i] 表示节点i是否在最小生成树中boolean[] inTree = new boolean[n + 1];// 初始时任选一个节点作为最小生成树的初始节点,这里选择节点1inTree[1] = true;// 记录最小生成树中点数量int inTree_count = 1;// dis[i]表示节点i到最小生成树集合的最短距离int[] dis = new int[n + 1];for (int i = 1; i <= n; i++) {// 初始时,最小生成树集合中只有节点1,因此其他节点到最小生成树的距离,其实就是到节点1的距离dis[i] = graph[1][i];}// 如果最小生成树中点数量达到n个,则结束循环while (inTree_count < n) {// 现在我们需要从未纳入最小生成树的点中,找到一个距离最小生成树最近的// minDis 记录这个最近距离int minDis = Integer.MAX_VALUE;// nodeIdx 记录距离最小生成树minDis个距离的节点int nodeIdx = 0;for (int i = 1; i <= n; i++) {// 从未纳入最小生成树的点中,找到一个距离最小生成树最近的if (!inTree[i] && dis[i] < minDis) {minDis = dis[i];nodeIdx = i;}}// 如果nodeIdx == 0,则说明未纳入最小生成树的这些点到最小生成树的距离都是Integer.MAX_VALUE,即不与最小生成树存在关联if (nodeIdx == 0) {// 则说明,当前所有点无法形成最小生成树return -1;}inTree[nodeIdx] = true; // 最小生成树需要纳入最短距离点nodeIdxinTree_count++; // 最小生成树中点数量+1minWeight += dis[nodeIdx]; // 更新最小生成树的权重和// 更新dis数组,使得dis[i]记录节点i到最小生成树的最短距离for (int i = 1; i <= n; i++) {if (!inTree[i] && graph[nodeIdx][i] < dis[i]) {// 如果节点i到新节点nodeIdx的距离更近,则更新dis[i]dis[i] = graph[nodeIdx][i];}}}return minWeight;}
}

相关文章:

OD_2024_C卷_200分_7、5G网络建设【JAVA】【最小生成树】

package odjava;import java.util.Scanner;public class 七_5G网络建设 {public static void main(String[] args) {Scanner sc new Scanner(System.in);int n sc.nextInt(); // 基站数量&#xff08;节点数&#xff09;int m sc.nextInt(); // 基站对数量&#xff08;边数&…...

面试题:分布式锁用了 Redis 的什么数据结构

在使用 Redis 实现分布式锁时&#xff0c;通常使用 Redis 的字符串&#xff08;String&#xff09;。Redis 的字符串是最基本的数据类型&#xff0c;一个键对应一个值&#xff0c;它能够存储任何形式的字符串&#xff0c;包括二进制数据。字符串类型的值最多可以是 512MB。 Re…...

【学习心得】websocket协议简介并与http协议对比

一、轮询和长轮询 在websocket协议出现之前&#xff0c;要想实现服务器和客户端的双向持久通信采取的是Ajax轮询。它的原理是每隔一段时间客户端就给服务器发送请求找服务器要数据。 让我们通过一个生活化的比喻来解释轮询和长轮询假设你正在与一位不怎么主动说话的老大爷&…...

基于Token的身份验证:安全与效率的结合

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…...

Electron程序如何在MacOS下获取相册访问权限

1.通过entitiment.plist&#xff0c;在electron-builder签名打包时&#xff0c;给app包打上签名。最后可以通过codesign命令进行验证。 TestPhotos.plist electron-builder配置文件中加上刚刚的plist文件。 通过codesign命令验证&#xff0c;若出现这个&#xff0c;则说明成…...

uniapp让输入框保持聚焦状态,不会失去焦点

使用场景&#xff1a;当输入框还有发送按钮的时候&#xff0c;点击发送希望软键盘不消失&#xff0c;还可以继续输入&#xff0c;或者避免因输入图片标签造成的屏闪问题 多次尝试后发现一个很实用的方法&#xff0c;适用input输入框和editor输入框 解决办法&#xff1a;把cli…...

面试中如何介绍mysql的B+树

B树是B树的变体&#xff0c;也是一颗多路搜索树。在MySQL中&#xff0c;B树是为磁盘或者其他直接辅助存储设备所设计的一种平衡的查找树结构。其具有以下特点&#xff1a; 每个节点最多有m个子女&#xff0c;m阶的B树深度最多为m。非根节点关键值个数范围是⌈m/2⌉-1<k<m…...

【Linux C | 网络编程】多播的概念、多播地址、UDP实现多播的C语言例子

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…...

AIGC实战——GPT(Generative Pre-trained Transformer)

AIGC实战——GPT 0. 前言1. GPT 简介2. 葡萄酒评论数据集3. 注意力机制3.1 查询、键和值3.2 多头注意力3.3 因果掩码 4. Transformer4.1 Transformer 块4.2 位置编码 5. 训练GPT6. GPT 分析6.1 生成文本6.2 注意力分数 小结系列链接 0. 前言 注意力机制能够用于构建先进的文本…...

微信小程序-入门

一.通过 Npm方式下载构建 1.下载和安装Npm&#xff1a;Npm https://docs.npmjs.com/downloading-and-installing-node-js-and-npm 或者 https://nodejs.org/en/download/ 未安装npm 提示 以下以安装node安装包为例 按任意键继续 安装完成后 2. 下载和安装小程序开…...

0102全排列和对换-行列式-线性代数

把n个不同的数排成一列&#xff0c;叫做这n个数的全排列&#xff08;排列&#xff09;。 一般情况&#xff0c; 1 , 2 , ⋯ , n 1,2,\cdots,n 1,2,⋯,n是n个数排列的标准次序。 当n个数的任一排列中两个数的先后次序与标准次序不同时&#xff0c;有说有一个逆序。 一个排列中所…...

面向对象的编程语言是什么意思?——跟老吕学Python编程

面向对象的编程语言是什么意思&#xff1f;——跟老吕学Python编程 面向对象是什么意思&#xff1f;面向对象的定义面向对象的早期发展面向对象的背景1.审视问题域的视角2.抽象级别3.封装体4.可重用性 面向对象的特征面向对象的开发方法面向对象程序设计基本思想实现 面向对象的…...

Spring Boot整合MyBatis Plus配置多数据源

Spring Boot 专栏&#xff1a;https://blog.csdn.net/dkbnull/category_9278145.html Spring Cloud 专栏&#xff1a;https://blog.csdn.net/dkbnull/category_9287932.html GitHub&#xff1a;https://github.com/dkbnull/SpringBootDemo Gitee&#xff1a;https://gitee.com/…...

Unix Network Programming Episode 88

‘inetd’ Daemon On a typical Unix system, there could be many servers in existence, just waiting for a client request to arrive. Examples are FTP, Telnet, Rlogin, TFTP, and so on. With systems before 4.3BSD, each of these services had a process associate…...

Java面试题之11MySQL

你对MySQL执行计划怎么看 执行计划就是SQL的执行查询的顺序&#xff0c;以及如何使用索引查询&#xff0c;返回的结果集的行数 在MySQL中&#xff0c;我们可以通过explain命令来查看执行计划。其语法如下&#xff1a; EXPLAIN SELECT * FROM table_name WHERE conditions;在…...

R语言:多值提取到点

ArcGIS中有相关工具实现多值提取到点的功能&#xff0c;在这里&#xff0c;我将使用R语言进行操作&#xff1a; library(dplyr) library(readxl) library(sf) library(raster)setwd("D:/Datasets") Bio <- stack(paste0("D:/Datasets/Data/worldclim2_1km/…...

八股文打卡day27——数据库(4)

面试题&#xff1a;讲一下事务的隔离级别&#xff1f; 我的回答&#xff1a; 因为事务之间的隔离性&#xff0c;造成了一些问题&#xff0c;比如说&#xff1a;脏读、不可重复读和幻读&#xff08;虚读&#xff09;。 1.什么叫脏读&#xff1f; 就是一个事务读取到了另一个事…...

Java桥接模式源码剖析及使用场景

目录 一、介绍二、项目管理系统中使用桥接模式三、权限管理中使用桥接模式四、Java JDBC中使用桥接模式 一、介绍 它的主要目的是将抽象化与实现化分离&#xff0c;使得二者可以独立变化&#xff0c;就像一个桥&#xff0c;将两个变化维度连接起来。各个维度都可以独立的变化。…...

【异常处理】verilator安装时出现异常 make: *** [Makefile:195: verilator_gantt.1] Error 13

在ubuntu中安装verilator工具时执行make出现该报错。 当我出现这个报错的时候我一脸懵逼&#xff0c;因为网上找不到相关解决办法。 后来想到我的verilator是从github上下载zip&#xff0c;然后解压后传到ubuntu上的&#xff0c;windows上解压我记得会把-替换成_&#xff0c;这…...

测试一下 Anthropic 宣称超过 GPT-4 的 Claude 3 Opus

测试一下 Anthropic 宣称超过 GPT-4 的 Claude 3 Opus 0. 引言1. 测试 Claude 3 Opus3. 试用 api key 限制 0. 引言 今天测试一下 Anthropic 发布的 Claude 3 Opus。 3月4日&#xff0c;Anthropic 宣布推出 Claude 3 型号系列&#xff0c;该系列在广泛的认知任务中树立了新的…...

RMBG-2.0企业知识库建设:抠图操作SOP文档、FAQ知识图谱与智能客服接入

RMBG-2.0企业知识库建设&#xff1a;抠图操作SOP文档、FAQ知识图谱与智能客服接入 1. 引言&#xff1a;当智能抠图遇上企业流程 想象一下&#xff0c;你是一家电商公司的设计主管。每天&#xff0c;团队需要处理上百张商品图片——换背景、做海报、上架新品。设计师们重复着“…...

别被“纯解释型语言”骗了:揭开 Python 运行机制的真实底牌

在编程语言的鄙视链中&#xff0c;Python 经常被贴上一个标签&#xff1a;“它只是一门解释型语言&#xff0c;所以它很慢。” 这种刻板印象往往来自于我们在命令行里敲下 python script.py 后它立即运行的爽快感。没有漫长的 make&#xff0c;没有 gcc 编译报错&#xff0c;仿…...

IntelliPro 企业级产研协作平台:前端智能生产模块设计与落地

摘要 当前企业级前端研发面临复杂度高、迭代快、跨团队协作成本高的痛点&#xff0c;传统开发模式难以适配高效产研需求。本文围绕 IntelliPro 平台前端智能生产模块&#xff0c;拆解其定位、分层架构、智能代理体系与落地保障&#xff0c;输出企业前端智能化研发的实践方案。 …...

Windows 11系统优化终极指南:Win11Debloat一键清理与隐私保护工具

Windows 11系统优化终极指南&#xff1a;Win11Debloat一键清理与隐私保护工具 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declu…...

和AI一起搞事情#:边剥龙虾边做个中医技能来起号图

1. 核心概念 在 Antigravity 中&#xff0c;技能系统分为两层&#xff1a; Skills (全局库)&#xff1a;实际的代码、脚本和指南&#xff0c;存储在系统级目录&#xff08;如 ~/.gemini/antigravity/skills&#xff09;。它们是“能力”的本体。 Workflows (项目级)&#xff1a…...

Windows网络修复器

链接&#xff1a;https://pan.quark.cn/s/644d56bcec08Windows网络修复器是一款能够帮助用户恢复网络的工具&#xff0c;能够清理DNS本地缓存&#xff0c;并且能够帮助用户修复网络连接&#xff0c;让你能够更好的使用网络&#xff0c;有需要的用户不要错过了欢迎下载使用&…...

从ViT到Swin:手把手教你理解那个让Transformer在CV领域“开窍”的Shifted Windows

从ViT到Swin&#xff1a;揭秘Shifted Windows如何让Transformer在CV领域"开窍" 当Vision Transformer&#xff08;ViT&#xff09;首次将自然语言处理领域的Transformer架构引入计算机视觉时&#xff0c;整个AI社区为之振奋。但很快&#xff0c;研究者们发现了一个尴…...

AI开发-python-langchain框架(--并行流程 )谀

如果有多个供应商&#xff0c;你也可以使用 [[CC-Switch]] 来可视化管理这些API key&#xff0c;以及claude code 的skills。 # 多平台安装指令 curl -fsSL https://claude.ai/install.sh | bash ## Claude Code 配置 GLM Coding Plan curl -O "https://cdn.bigmodel.…...

VSCode里那个烦人的Delete ␍ prettier报错,我是这样一键解决的

VSCode里那个烦人的Delete ␍ prettier报错&#xff0c;我是这样一键解决的 每次在VSCode里保存文件时&#xff0c;右下角突然蹦出那个"Delete ␍ prettier/prettier"的红色报错&#xff0c;你是不是也和我一样感到烦躁&#xff1f;作为一个长期在Windows和Mac之间切…...

微信H5分享功能实战:从配置到卡片式分享的完整指南

1. 微信H5分享功能的核心原理 微信H5页面分享功能和小程序分享最大的区别在于触发方式。H5页面无法像小程序那样直接调用onShareAppMessage方法&#xff0c;而是需要用户主动点击右上角的菜单按钮才能触发分享。这个设计差异导致很多开发者第一次接触H5分享时会感到困惑。 微信…...