题目描述
快递覆盖的范围有N的站,如果A和B都可以用来中转,我们就称A-B站可达。如果A-B可达,B-C可达,则A-C达。我们现在有N个编号,如果s[i][j] =1,表示i-j可达,如果s[i][j] =0,表示i-j不可达。现用二维数组给定N个站点的可达关系,请计算至少选择从几个主站点出发,才能可达所有站点(覆盖所有站点业)
说明: s[i][j] 与s [j][i] 取值相同
输入描述:
第一行输入为N,N表示站点个数之后N行表示站点之间的可达关系,第i行第i个数值表示编号为i和之间是否可达输出描述:
输出站点个数,表示至少需要多少个主站点
补充说明:
1<N<10000
示例1
输入:
4
1 1 1 1
1 1 1 0
1 1 1 0
1 0 0 1
输出:
1
说明:
选择0号站点作为主站点,0站点可达其他所有站点,所以至少选择1个站点作为主站才能覆盖所有站点业务。
解题思路
siteCount
表示站点数量,关系矩阵connectivityMatrix
表示站点之间的可达性关系。coveredSites
表示已覆盖站点。遍历所有站点,对于尚未覆盖的站点:
用tempSet
存储当前站点能覆盖的站点。然后深度优先遍历找到所有可达站点,并存到tempSet
中。然后将te