通过率 56% · 提交 954 · 通过 536
小慕正在搭建一个服务器集群,服务器之间的连接方式包括和。如果服务器 A 和 B 直接连接,B 和 C 直接连接,那么 A 和 C 就是间接连接的。 无论是直接连接还是间接连接,都可以用来传递广播消息。 小慕用一个大小为 N*N 的二维矩阵 matrix 来表示这 N 个服务器之间的连接关系。 其中,matrix[i][j] = 1 表示服务器 i 和 j 直接连接;matrix[i][j] = 0 表示它们不直接连接。特别地,matrix[i][i] = 1,表示每个服务器都与自身直接连接。 小慕想知道,初始时至少需要向几台服务器发送广播,才能让所有服务器都收到广播。
这类题属于华为 OD 机考真题方向中「200分 / DFS」方向的高频题型,通常考察对「200分 / DFS」的建模能力与边界条件处理。掌握本题的解题思路后,可举一反三应对同类真题方向,稳步提升机考通过率。
提示:带虚线的词点一下有通俗解释。
输入为 N 行,每行有 N 个数字,为 0 成 1,由空格分隔,构成 N*N 的二维矩阵matrix,N 的范围为 1 <= N <= 40。
输出一个数字,为需要广播的服务器的数量。
示例 1
输入示例
1 0 0 0 1 0 0 0 1
输出示例
3
示例 2
输入示例
1 1 1 1
输出示例
1
本平台为独立第三方培训机构,与华为技术有限公司无任何关联;课程的服务内容与权益以购买协议为准,学习效果因个人情况而异。「华为 OD」「华为可信」等仅为对岗位与考试方向的客观描述,相关商标归各自权利人所有。
相关图解步骤
先看指定步骤补关键知识点,再回到本题完成标准输入输出。
本题和 省份数量 不能说毫无联系,只能说一模一样。
使用 广度优先搜索 遍历所有节点,每遇到一个未被访问的节点,就将其加入队列,并标记为已访问。然后依次取出队列中的节点,遍历其所有相邻节点,若相邻节点未被访问且存在连接,则将其加入队列并标记。每启动一次 BFS,就说明找到了一个 连通分量,最终统计启动 BFS 的次数即为答案。
关键步骤: 1. 初始化一个 访问数组 visited,长度等于节点数,初始值均为 False。 2. 遍历所有节点,若当前节点未被访问,则计数器加一,并以其为起点执行 BFS。 3. BFS 过程中,使用队列存储待访问节点,并不断将相邻且未访问的节点入队。 4. 遍历结束后,计数器的值即为 连通分量数。
复杂度分析 设 N 为服务器的台数,即连接矩阵的边长。答案是无向图的连通分量个数:每个连通分量只需向其中任意一台服务器发送广播。
边界与注意事项
登录后可查看你在本题的历史提交,以及每次的各用例通过情况。
时间限制 1000 ms · 内存限制 128 MB
© 2026 广州慕课网络科技有限公司 · 吴师兄学算法官网 版权所有