1. 题目
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/4dfe1638f5ca365bbc273bb61cc7f4dc.png#pic_center)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/abe0f3b7ce51cedea4b8ac7bffc57042.png#pic_center)
2. 题解
from typing import List
class UnionFind:
def __init__(self, count):
self.father = {}
self.count = count
def find(self, x):
self.father.setdefault(x, x)
if x != self.father[x]:
self.father[x] = self.find(self.father[x])
return self.father[x]
def union(self, x, y):
fx, fy = self.find(x), self.find(y)
if fx == fy:
return
self.father[fx] = fy
self.count -= 1
class Solution:
def findCircleNum(self, isConnect: List[List[int]]) -> int:
n = len(isConnect)
uf = UnionFind(n)
for i in range(n):
for j in range(i + 1, n):
if isConnect[i][j]:
uf.union(i, j)
return uf.count