BFS (재귀)를 사용한다. 네트워크 수는 트리의 갯수와 같으며 트리의 갯수만큼 visit 했는지 여부를 처음엔 False로 선언하고 BFS를 돌면서 방문 할 때마다 True로 변경해준다
solution.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
defDFS(n,computers,node,visited):# 현재 노드를 방문 처리visited[node]=True# 현재 노드와 연결된 다른 노드를 재귀적으로 방문forconnectinrange(n):ifconnect!=nodeandcomputers[node][connect]==1:ifvisited[connect]==False:DFS(n,computers,connect,visited)defsolution(n,computers):visited=[False]*nanswer=0# 트리의 갯수=nfornodeinrange(n):ifvisited[node]==False:DFS(n,computers,node,visited)answer+=1returnanswer
defsolution(n,computers):answer=0visited=[0foriinrange(n)]defdfs(computers,visited,start):stack=[start]whilestack:j=stack.pop()ifvisited[j]==0:visited[j]=1# for i in range(len(computers)-1, -1, -1):foriinrange(0,len(computers)):ifcomputers[j][i]==1andvisited[i]==0:stack.append(i)i=0while0invisited:ifvisited[i]==0:dfs(computers,visited,i)answer+=1i+=1returnanswer