计算至少需要多少个快递主站点javascript

2023-11-19

题目

题目描述:
快递业务范围有N个站点,A站点与B站点可以中转快递,则认为A-B站可达,如果A-B可达,B-C可达,则A-C可达。现在给N个站点编号0、1、…n-1,用s[i][j]表示i-j是否可达,s[i][j]=1表示i-j可达,s[i][j]=0表示i-j不可达。
现用二维数组给定N个站点的可达关系,请计算至少选择从几个主站点出发,才能可达所有站点(覆盖所有站点业务)。
说明:s[i][j]与s[j][i]取值相同。

输入描述:
第一行输入为N,N表示站点个数。
之后N行表示站点之间的可达关系,第i行第j个数值表示编号为i和j之间是否可达。
输出描述:
输出站点个数,表示至少需要多少个主站点。
补充说明:
1<N<10000

InsCode

java
搜索
(图像)
示例1
输入:
4
1 1 1 1
1 1 1 0
1 1 1 0
1 0 0 1
输出:
1
说明:
选择0号站点作为主站点,0站点可达其他所有站点,所以至少选择1个站点作为主站才能覆盖所有站点业务。
示例2
输入:
4
1 1 0 0
1 1 0 0
0 0 1 0
0 0 0 1
输出:
3
说明:
选择0号站点可以覆盖0、1站点,选择2号站点可以覆盖2号站点,选择3号站点可以覆盖3号站点,所以至少选择3个站点作为主站才能覆盖所有站点业务。

并查集

function find(root, id) {
    while (id !== root[id]) {
        id = root[id];
    }
    return id;
}

function union(roots, a, b) {
    let rootA = find(roots, a);
    let rootB = find(roots, b);
    roots[rootA] = rootB;
}

function deal(arr) {
    let roots = {};
    let n = Number(arr[0]);
    let station = arr.slice(1, arr.length).map((line) => {
        return line.split(' ').map((v) => {
            return Number(v);
        })
    });

    // console.log(JSON.stringify(station));
    for (let i = 0; i < n; i++){
        roots[i] = i;
    }

    for (let i = 0; i < n; i++) {
        for (let j = 0; j < n; j++) {
            if (station[i][j] === 1) {
                union(roots, i, j);
            }
        }
    }

    for (let i = 0; i < n; i++){
        let r = find(roots,i);
        roots[i] = r;
    }
    console.log(JSON.stringify(roots));
}


let r1 = [
    "4",
    "1 1 1 1",
    "1 1 1 0",
    "1 1 1 0",
    "1 0 0 1"
];
deal(r1);

let r2 = [
    "4",
    "1 1 0 0",
    "1 1 0 0",
    "0 0 1 0",
    "0 0 0 1"
];
deal(r2);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算至少需要多少个快递主站点javascript 的相关文章

随机推荐

  • 重要通知:9月1日起,微信小程序须完成备案后才可上架

    微信官方通知 近日 工信部发布了 工业和信息化部关于开展移动互联网应用程序备案工作的通知 8月9日 微信公众平台也发布了 关于开展微信小程序备案的通知 一 备案必要性 在中华人民共和国境内从事互联网信息服务的移动互联网应用程序主办者 应当依
  • ArduCopter调试

    1 ArduPilot main 我们知道 在 C语言中最经典的程序是 Hello World 这应该是我们在 C语言中最早接触的一个程序了 而在单片机中 最经典的一个程序当属 LED了 那么这里我们为什么不去分析 Hello World
  • 使用嵌入式linux完全手册光盘的arm-linux-gcc 遇到问题 自己编译

    Redhat9下重新生成交叉编译器gcc 3 4 5 glibc 2 3 6 看到论坛上有兄弟也遇到 arm linux gcc lib tls libc so 6 version GLIBC 2 4 not found required
  • 鸿蒙手机录音,录音应用的隐藏功能,90%的人不知道?

    录音应用的隐藏功能 90 的人不知道 2019 04 22 16 57 20 1点赞 0收藏 0评论 录音应用其实隐藏着可以自动开始和结束 脱离手用蓝牙耳机录音 只在说话时录音 你使用过吗 这款录音应用可是被苹果App Store推荐过的
  • 从零开始:在腾讯云轻量服务器上安装Docker,实现快速开发和部署!

    本文指导您如何在 零基础轻量应用服务器上安装 Docker 以及使用 Docker 镜像源加速镜像下载 好了 没有废话 让我们开始行动吧 第一步 购买服务器 小编买的是 腾讯的 1年446RMB 下载链接如下 学生云服务器 学生云主机 学生
  • 可靠数据传输的实现

    可靠数据传输协议 我们知道 TCP和UDP都是基于IP网际协议来传输数据的 但是IP网际协议是一种不可靠数据传输协议 它不负责数据丢失等情况 而TCP是一种可靠数据传输 因此我们需要来关注TCP是如何实现可靠数据传输的 经完全可靠信道的可靠
  • wxc-button使用

  • 怎么理解回流跟重绘?什么场景下会触发?

    目录 一 什么是回流 下面这些操作会导致回流 二 什么是重绘 下面这些操作会导致重绘 除此之外还有一些其他引起重绘行为 三 如何避免回流与重绘 减少回流与重绘的措施 一 什么是回流 当渲染树中部分或者全部元素的尺寸 结构或者属性发生变化时
  • 多编程语言代码生成神器 CodeGeeX,编码效率提升十倍!

    点击上方 芋道源码 选择 设为星标 管她前浪 还是后浪 能浪的浪 才是好浪 每天 10 33 更新文章 每天掉亿点点头发 源码精品专栏 原创 Java 2021 超神之路 很肝 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网
  • 物理端口UP 协议DOWN 的排错步骤

    端口的物理层Up 但是协议Down 可能的原因有很多种 一般而言 链路层协议从 初始化到Up 起来 都会经过一个协议的 协商 过程 这里所说的协商是广义上的协商 既包括链路层协议本身规定的参数 能力协商 也包括协议所规定的定期性的链路通达性
  • Drupal YAML 反序列化代码执行漏洞(CVE-2017-6920)

    事件背景 框架漏洞收集 老外的CMS框架 比较复杂 数据流向太长 调试需要消耗较多的时间 漏洞说明 1 漏洞原理 2017年6月21日 Drupal官方发布了一个编号为CVE 2017 6920 的漏洞 影响为Critical 这是Drup
  • maven 仓库配置 pom中repositories属性

    什么是Maven仓库 在不用Maven的时候 比如说以前我们用Ant构建项目 在项目目录下 往往会看到一个名为 lib的子目录 那里存放着各类第三方依赖jar文件 如log4j jar junit jar等等 每建立一个项目 你都需要建立这
  • python实现二叉树遍历

    使用python实现二叉树的四种遍历 前序 中序 后序和层次遍历 以遍历下图二叉树为例 1 树的构造 代码如下 coding utf 8 class Node object 节点类 def init self elem 1 lchild N
  • 串的模式匹配算法之KMP与BF

    这几天做手机软件 都不怎么看一些算法小程序了 同学数据结构作业 急需交 帮其做 文件名 KMP BF cpp 描述 实验内容 比较BF算法和KMP算法的优劣 实验基本要求 1 采用定长顺序显示表示串长的结构来存储串 结构定义见课件第17张幻
  • 第一回:Matplotlib初相识

    文章目录 第一回 Matplotlib初相识 一 认识matplotlib 二 一个最简单的绘图例子 三 Figure的组成 四 两种绘图接口 五 通用绘图模板 思考题 第一回 Matplotlib初相识 一 认识matplotlib Ma
  • 完美解决maven项目配置文件不生效、更新问题

    0 前言 三种需求情况 场景 以及解决办法 1 不知道为什么配置文件 xmlymlproperties 不生效 可能是java路径也可能是resource路径 2 Maven项目配置文件 不实时更新 3 非resource路径下的配置文件不
  • 计算机辅助诊断应用,数据挖掘在计算机辅助诊断中的应用研究

    摘要 近年来 计算机辅助诊断 Computer Aided Diagnosis CAD 逐渐成为医学领域的研究热点之一 很多计算机辅助诊断技术不断出现并获得快速发展 对于提高临床医生诊断的准确率 减少漏诊起到了积极的作用 数据挖掘技术的兴起
  • 网络编程中的协议格式

    数据包封装 传输层及其以下的机制由内核提供 应用层由用户进程提供 后面将介绍如何使用socket API编写应用程序 应用程序对通讯数据的含义进行解释 而传输层及其以下处理通讯的细节 将数据从一台计算机通过一定的路径发送到另一台计算机 应用
  • 毕业设计-基于 MATLAB 的车牌识别系统设计

    目录 前言 课题背景和意义 实现技术思路 一 车牌识别系统总体方案设计 二 车牌识别系统硬件设计 三 车牌识别系统软件设计 四 实验结果与分析 部分源代码 实现效果图样例 最后 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕
  • 计算至少需要多少个快递主站点javascript

    题目 题目描述 快递业务范围有N个站点 A站点与B站点可以中转快递 则认为A B站可达 如果A B可达 B C可达 则A C可达 现在给N个站点编号0 1 n 1 用s i j 表示i j是否可达 s i j 1表示i j可达 s i j