Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python의 친구 연결 집합에서 친구 그룹 수를 찾는 프로그램

<시간/>

친구 목록이 있다고 가정합니다. 여기서 친구[i]는 i가 친구인 사람들의 목록입니다. 우정의 연결은 양방향입니다. 그리고 각 사람은 자신과 친구이며 두 사람은 서로를 연결하는 상호 친구의 길이 있는 한 친구 그룹입니다. 총 친구 그룹 수를 찾아야 합니다.

따라서 입력이 friend =[[0, 1, 5],[1, 0],[2],[3, 4],[4, 3],[5, 0]]인 경우 출력은 세 친구 그룹은 아래와 같으므로 3이 됩니다. -

Python의 친구 연결 집합에서 친구 그룹 수를 찾는 프로그램

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • 노드 :=친구의 크기
  • visited :=노드와 크기가 같고 False로 채워진 목록
  • ans :=0
  • dfs() 함수를 정의합니다. 정점이 필요합니다.
  • 방문함[정점] :=참
  • 친구[정점]에 있는 각 nei에 대해 다음을 수행합니다.
    • 방문한[nei]가 거짓이면
      • dfs(nei, 방문)
  • 메인 방법에서 다음을 수행하십시오. -
  • 범위 0에서 노드까지의 i에 대해 다음을 수행합니다.
    • 방문한[i]가 거짓이면
      • dfs(i, 방문)
      • ans :=ans + 1
  • 반환

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

예시

class Solution:def solve(self, friends):nodes =len(friends) visited =[False for _ in range(nodes)] ans =0 def dfs(vertex, Visited):Visited[vertex] =True for 친구의 nei[정점]:방문하지 않은 경우[nei]:dfs(nei, 방문) for i in range(노드):방문하지 않은 경우[i]:dfs(i, 방문) ans +=1 return ansob =Solution( )친구 =[ [0, 1, 5], [1, 0], [2], [3, 4], [4, 3], [5, 0] ]print(ob.solve(친구)) 

입력

[[0, 1, 5],[1, 0],[2],[3, 4],[4, 3],[5, 0]]

출력

3