服务器广播

题目描述

服务器连接方式包括直接相连,间接相连。A和B直接连接,B和C直接连接,则A和C间接连接。直接连接和间接连接都可以发送广播。

给出一个 N * N 数组,代表N个服务器,

matrix[i][j] = 1,则代表 i 和 j 直接连接;不等于1时,代表 i 和 j 不直接连接。
matrix[i][i] = 1, 即自己和自己直接连接。
matrix[i][j] = matrix[j][i]。
计算初始需要给几台服务器广播,才可以使每个服务器都收到广播。

输入描述

输入为N行,每行有N个数字,为0或1,由空格分隔,构成N*N的数组,N的范围为 1 <= N <= 40

输出描述
输出一个数字,为需要广播的服务器的数量

例1

输入
1 0 0
0 1 0
0 0 1
输出
3
说明
3台服务器互不连接,所以需要分别广播这3台服务器

例2

输入
1 1
1 1
输出
1
说明
2台服务器互相连接,所以只需要广播其中一台服务器

题解

考察并查集
根据题意,最多使用N台服务,对角线外面的点,作为一个连接点,连接两个对角线上的服务器,如
[1, 0, 1]
[0, 1, 0]
[0, 0, 1]
(0,2) 连接了(0,0)和(2,2),(0,2)和(0,0)和(2,2)就在一个集合里,(1,1)单独作为一个集合,一个集合只需要1台服务器就可以广播集合里全部服务器

Python 代码实现


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小莫同学吖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值