OJ-5G网络建设

news2024/11/5 1:02:26

 示例1

输入:
3
3
1 2 3 0
1 3 1 0
2 3 5 0
输出:
4

示例2

输入:
3
1
1 2 5 0
输出:
-1

示例3

输入:
3
3
1 2 3 0
1 3 1 0
2 3 5 1
输出:
1

分析:压缩路径

顺序:1 2;1 3;2 3;3 4

root[i]初始化合并1 2合并1 3合并2 3合并3 4最终root
root[1]124
root[2]234
root[3]344
root[4]44

顺序:2 3;1 2;1 3;3 4

root[i]初始化合并2 3合并1 2合并1 3合并3 4最终root
root[1]134
root[2]234
root[3]344
root[4]44

结论:优先按照边的权重小的连接,上述4个节点至少需要3条边连接,1 2,1 3,2 3中只需其中任意两条边即能将1、2、3节点连接。

代码:

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;


public class 五G网络建设2 {
    private static int[] root;
    private static final List<int[]> edge = new ArrayList<>();

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int m = in.nextInt();
        
        root = new int[n + 1];
        for (int i = 1; i <= n; i++) {
            root[i] = i;
        }

        for (int i = 0; i < m; i++) {
            int x = in.nextInt();
            int y = in.nextInt();
            int z = in.nextInt();
            int p = in.nextInt();

            if (p == 1) {
                merge(x, y);
            } else {
                edge.add(new int[]{x, y, z});
            }
        }
        edge.sort((o1, o2) -> o1[2] - o2[2]);

        int price = 0;
        for (int[] e : edge) {
            if (merge(e[0], e[1]) == 1) {
                price += e[2];
            }
        }

        boolean ok = true;
        for (int i = 1; i <= n; i++) {
            if (getRoot(i) != getRoot(1)) {
                ok = false;
                break;
            }
        }
        if (ok) {
            System.out.println(price);
        } else {
            System.out.println(-1);
        }
    }

    private static int merge(int x, int y) {
        int rootX = getRoot(x);
        int rootY = getRoot(y);
        if (rootX == rootY) {
            return 0;
        }
        root[rootX] = rootY;
        return 1;
    }

    private static int getRoot(int x) {
        if (root[x] == x) {
            return x;
        }
        return getRoot(root[x]);
    }
}

251.【华为OD机试】5G网络建设(最小生成树算法-Java&Python&C++&JS实现)_java算法5g基站-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2232208.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【ChatGPT】搜索趋势分析

【ChatGPT】搜索趋势分析 为了分析 ChatGPT 在过去一年的流行趋势&#xff0c;我们可以查看 Google Trends 的数据 安装依赖pytrends pip install pytrends运行以下 Python 脚本 import pandas as pd import matplotlib.pyplot as plt from pytrends.request import TrendR…

Mac如何实现高效且干净的卸载应用程序

使用Mac卸载应用程序&#xff0c;你还在使用废纸篓这个办法吗&#xff0c;看不见卸载了什么&#xff0c;看不见清理了多少&#xff0c;真的不会有残留吗 XApp Mac上的卸载专家&#xff0c;强大的垃圾逻辑检测&#xff0c;垃圾扫描更全面&#xff0c;卸载更干净 使用简单&#…

安科瑞AMB400分布式光纤测温系统解决方案--远程监控、预警,预防电气火灾

安科瑞戴婷 可找我Acrel-Fanny 安科瑞AMB400电缆分布式光纤测温具有多方面的特点和优势&#xff1a; 工作原理&#xff1a; 基于拉曼散射效应。激光器产生大功率的光脉冲&#xff0c;光在光纤中传播时会产生散射。携带有温度信息的拉曼散射光返回光路耦合器&#xff0c;耦…

GitHub上传自己的项目

目录 一、安装Git插件 1&#xff09;下载 2&#xff09;安装 二、创建Gothub的创库 三、通过Git上传本地文件到Github 四、其他 1、部分指令 2、如果已经运行过git init并设置了[user]&#xff0c;下次可以直接用 一、安装Git插件 1&#xff09;下载 下载地址&#x…

Spring Boot框架

一.SpringBoot简介 1.1 设计初衷 目前我们开发的过程当中&#xff0c;一般采用一个单体应用的开发采用 SSM等框架进行开发&#xff0c;并在 开发的过程当中使用了大量的xml 等配置文件&#xff0c;以及在开发过程中使用MAVEN的构建工具来进 行构建项目&#xff0c;但是往往有…

【C++】vector 类深度解析:探索动态数组的奥秘

&#x1f31f;快来参与讨论&#x1f4ac;&#xff0c;点赞&#x1f44d;、收藏⭐、分享&#x1f4e4;&#xff0c;共创活力社区。 &#x1f31f; 如果你对string类还存在疑惑&#xff0c;欢迎阅读我之前的作品 &#xff1a; &#x1f449;【C】string 类深度解析&#xff1a;…

windows——病毒的编写

声明 学习视频来自B 站up主泷羽sec&#xff0c;如涉及侵权马上删除文章。 笔记的只是方便各位师傅学习知识&#xff0c;以下网站只涉及学习内容&#xff0c;其他的都与本人无关&#xff0c;切莫逾越法律红线&#xff0c;否则后果自负。 windows基础 我们学习了前面的window…

STM32 + CubeMX + 硬件SPI + W5500 +UDP

这篇文章记录一下STM32W5500UDP的调试过程&#xff0c;实现UDP数据的接收与发送。 目录 一、W5500模块介绍二、Stm32CubeMx配置三、Keil代码编写1、添加W5500驱动代码到工程&#xff08;添加方法不赘述&#xff0c;驱动代码可以在官网找&#xff09;2、在工程中增加代码&#…

原来大佬的测试用例都是这样写的...

1、测试点与测试用例 测试点不等于测试用例&#xff0c;这是我们首先需要认识到的。 问题1&#xff1a;这些测试点在内容上有重复&#xff0c;存在冗余。 问题2&#xff1a;一些测试点的测试输入不明确&#xff0c;不知道测试时要测试哪些。 问题3&#xff1a;总是在搭相似…

【论文解读】Med-BERT: 用于疾病预测的大规模结构化电子健康记录的预训练情境化嵌入

【论文解读】Med-BERT: 用于疾病预测的大规模结构化电子健康记录的预训练情境化嵌入 Med-BERT:pretrained contextualized embeddings on large-scale structured electronic health records for disease prediction ​ ​ 摘要:基于电子健康记录(EHR)的深度学习(DL)预…

天锐绿盾加密软件与Ping32 — 数据安全与性能优化的完美结合

在数字化时代&#xff0c;企业对数据安全的重视程度日益增加。随着网络攻击和数据泄漏事件频发&#xff0c;选择合适的安全解决方案显得尤为重要。天锐绿盾与Ping32作为两款备受推崇的安全软件&#xff0c;各自为企业提供了独特的功能和优势&#xff0c;共同为企业的数据安全和…

随身WiFi三网切换靠谱吗?格行随身WiFi网速怎么样?

出门在外手机流量不够用&#xff0c;连接公共WIFI网速不稳定还存在安全隐患。小巧便携的随身WIFI成了外出用网的首选。面对市面上不同品牌&#xff0c;不同类型的随身WIFI不少朋友不免心生疑问&#xff1a;随身WIFI到底值不值得买&#xff1f;究竟是不是“智商税”&#xff1f;…

服务器数据恢复—SAN环境中LUN映射错误导致文件系统一致性出错的数据恢复案例

服务器数据恢复环境&#xff1a; SAN光纤网络环境&#xff0c;存储由一组6块硬盘组建的RAID6阵列构成&#xff0c;划分为若干LUN&#xff0c;MAP到跑不同业务的SUN SOLARIS操作系统服务器上。 服务器故障&分析&#xff1a; 因为业务需要&#xff0c;用户在该光纤存储环境中…

【skywalking 】More than 15,000 ‘grammar‘ tokens have been presented. 【未解决请求答案】

问题 skywalking相关版本信息 jdk&#xff1a;17skywalking&#xff1a;10.1.0apache-skywalking-java-agent&#xff1a;9.3.0ElasticSearch : 8.8.2 问题描述 More than 15,000 grammar tokens have been presented. To prevent Denial Of Service attacks, parsing has b…

004-Kotlin界面开发快速入水之TicTacToe

程序界面和效果 快速入水 要学习一样跟程序设计有关的东西&#xff0c;最好的办法始终是把手打湿&#xff0c;整一个能够运行&#xff0c;可以实验的东西出来。 也只有在程序开发中&#xff0c;我们才能想一个魔法师而不是魔术师&#xff0c;我们真的能够创造一个东西。而且编…

Node.js:Express 服务 路由

Node.js&#xff1a;Express 服务 & 路由 创建服务处理请求req对象 静态资源托管托管多个资源挂载路径前缀 路由模块化 Express是Node.js上的一个第三方框架&#xff0c;可以快速开发一个web框架。本质是一个包&#xff0c;可以通过npm直接下载。 创建服务 Express创建一…

C语言 | Leetcode C语言题解之第530题二叉搜索树的最小绝对差

题目&#xff1a; 题解&#xff1a; void dfs(struct TreeNode* root, int* pre, int* ans) {if (root NULL) {return;}dfs(root->left, pre, ans);if (*pre -1) {*pre root->val;} else {*ans fmin(*ans, root->val - (*pre));*pre root->val;}dfs(root->…

重学SpringBoot3-整合 Elasticsearch 8.x (二)使用Repository

更多SpringBoot3内容请关注我的专栏&#xff1a;《SpringBoot3》 期待您的点赞&#x1f44d;收藏⭐评论✍ 整合 Elasticsearch 8.x &#xff08;二&#xff09;使用Repository 1. 环境准备1.1 项目依赖1.2 Elasticsearch 配置 2. 使用Repository的基本步骤2.1 创建实体类2.2 创…

SpringBoot源码(四):run() 方法解析(一)

run()方法&#xff1a; public ConfigurableApplicationContext run(String... args) {// 记录应用启动时间long startTime System.nanoTime();DefaultBootstrapContext bootstrapContext createBootstrapContext();// 创建 ConfigurableApplicationContext 对象Configurabl…

ASP .NET CORE 6 在项目中集成WatchDog开源项目

概念 WatchDog是一个开源的项目&#xff0c;可以实现对.Net 应用程序和API实现实时应用日志和性能监控平台。可以实现实时记录和查看应用程序中的消息、事件、HTTP请求和响应&#xff0c;以及运行时捕获的异常&#xff0c;有效帮助开发人员去排查应用异常&#xff0c;提升开发效…