> 백엔드 개발 > C++ > 트리에서 꼭짓점을 제거한 후 연결된 구성 요소 수를 쿼리합니다.

트리에서 꼭짓점을 제거한 후 연결된 구성 요소 수를 쿼리합니다.

WBOY
풀어 주다: 2023-08-26 16:29:10
앞으로
1272명이 탐색했습니다.

트리에서 꼭짓점을 제거한 후 연결된 구성 요소 수를 쿼리합니다.

다음 쿼리를 사용하여 트리 꼭짓점을 제거한 후 남아 있는 연결된 구성 요소를 확인할 수 있습니다. 먼저 트리 구조를 고려하세요. 그런 다음 너비 우선 또는 깊이 우선 검색 알고리즘을 사용하여 트리를 이동하면서 연결된 각 구성 요소를 검사합니다. 필요한 정점이 제거되면 동일한 순회 방법을 사용하여 연결된 구성 요소의 수를 결정합니다. 퇴학 전후의 카운트 변화에 따라 결과가 결정됩니다. 이 방법은 연결 변경 사항을 효과적으로 모니터링하고 트리의 연결된 구성 요소에 대한 업데이트를 계산하는 데 도움이 됩니다.

사용방법

  • DFS(깊이 우선 검색) 방법

  • 그리고 방법을 확인해보세요

깊이 우선 검색(DFS) 방법

DFS 방법에서는 먼저 원래 트리에서 선택한 노드에서 DFS 탐색을 수행하여 트리에서 정점을 제거한 후 연결된 구성 요소 수를 계산합니다. 이 순회 중에 연결된 각 노드를 반복하고 각 노드를 방문한 것으로 표시하고 DFS가 사용된 횟수를 추적합니다. 지정된 정점을 삭제한 후 새로운 DFS 순회를 수행하여 탐색 단계에서 삭제된 정점을 건너뛰도록 합니다. 삭제 전과 삭제 후 DFS에 대한 호출 수를 비교하여 업데이트된 트리에서 연결된 구성 요소 수를 확인할 수 있습니다. 이 방법을 사용하면 트리 구조의 변경 사항을 조정하면서 연결된 요소 수를 효율적으로 계산할 수 있습니다.

알고리즘

  • DFS 탐색의 시작점으로 원본 트리의 정점을 선택합니다.

  • 연결된 구성요소 계산을 시작하려면 변수 "count"를 설정하세요. 먼저 0으로 설정합니다.

  • 선택한 시작 정점에서 DFS를 사용하여 트리를 탐색합니다.

  • DFS 순회 중에 방문한 각 정점을 표시하고 새로운 DFS 호출이 있을 때마다(즉, 발견된 연결된 구성 요소마다) "개수"를 1씩 증가시킵니다.

  • DFS 순회가 완료된 후 원래 트리에 연결된 요소 수는 "개수"로 표시됩니다.

  • 트리에서 지정된 정점을 제거합니다.

  • 동일한 시작 정점에서 DFS 순회를 반복하여 삭제된 정점을 탐색하지 않도록 하세요.

  • DFS를 실행할 때 이전과 유사하게 "count" 변수를 업데이트합니다.

  • 업그레이드된 트리의 관련 구성요소 수는 시작 "수"에서 대피 후 "수"를 빼서 결정됩니다.

으아악

출력

으아악

그리고 방법도 확인해보세요

먼저 트리에서 정점을 제거한 후 연결된 구성 요소를 계산할 수 있도록 결합 찾기 메서드에서 각 정점을 별도의 구성 요소로 초기화합니다. 원본 트리의 부분과 연결을 추적하기 위해 데이터 구조를 취하고 조회합니다. 지정된 정점을 삭제한 후 트리 연결의 변경 사항을 반영하기 위해 데이터 구조를 업데이트하고 쿼리합니다. 그런 다음 데이터 구조의 다양한 세트 수를 세고 확인합니다. 결과 개수는 업데이트된 트리 구성 요소의 연결성을 나타냅니다. 정점을 제거한 후 검색 방법은 연결된 구성 요소를 효율적으로 계산하고 트리의 구조적 변경을 효과적으로 처리할 수 있습니다.

알고리즘

  • 처음부터 배열이나 데이터 구조를 만들어 각 정점을 트리의 다른 부분으로 표현하세요. 처음에는 각 정점이 자신의 상위 정점입니다.

  • 전처리 단계에서 AND 조회 작업을 사용하여 원래 트리의 연결된 구성 요소 수를 결정합니다.

  • 합집합 데이터 구조를 사용하여 각 모서리(u, v)에 대해 정점 u와 v를 포함하는 트리 부분을 결합합니다. 이 단계에서는 트리의 초기 연결이 설정됩니다.

  • 트리에서 지정된 정점을 제거합니다.

  • 수정된 트리에 전처리 단계의 Union Lookup 연산을 적용합니다.

  • 삭제 후 데이터 구조에서 서로 다른 부모 대표 수를 계산하고 확인합니다.

  • 결과 개수는 트리 업데이트 구성 요소의 연결성을 나타냅니다.

으아악

출력

으아악

결론

요약하자면, 제시된 방법은 특정 정점을 제거한 후 트리에서 연결된 부분의 수를 효율적으로 계산할 수 있습니다. 트리 구조의 연결성 변경은 깊이 우선 검색(DFS) 방법과 통합 검색 방법을 사용하여 효율적으로 처리할 수 있습니다. DFS 방법은 선택한 정점에서 순회를 시작하고 방문한 각 노드를 표시하고 연결된 구성 요소의 수를 계산합니다. 업데이트된 횟수는 정점을 삭제한 후 순회 전과 후의 순회 횟수를 비교하여 구하며, 삭제된 노드를 포함하지 않고 새로운 순회를 수행한다.

초기 연결된 구성요소 수는 각 정점을 별도의 구성요소로 초기화하는 Union-Find 메서드를 통한 결합 연산을 사용하여 결정됩니다. 정점을 삭제한 후 동일한 결합 작업을 적용하고 다른 상위 대표자의 수를 계산하여 업데이트된 수를 얻습니다.

두 방법 모두 정점이 제거된 후 트리의 연결성에 대한 유용한 통찰력을 제공할 수 있으며 다양한 시나리오에 적합합니다.

위 내용은 트리에서 꼭짓점을 제거한 후 연결된 구성 요소 수를 쿼리합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:tutorialspoint.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿