그래프의 표현 예제 - 3
문제 분석
트리의 경우에는 항상 이분 그래프가 된다.
사이클이 발생하지 않으면 탐색을 하면서 다음 노드를 이번 노드와 다른 집합으로 지정하면 되기 때문이다.
사이클이 발생했을 때는 이분 그래프가 불가능할 때가 있다.
기존의 탐색 메커니즘에서 탐색한 노드에 다시 접근하게 됐을 때 현재 노드의 집합과 같으면 이분 그래프가 불가능하다는 것으로 판별할 수 있다.
손으로 풀어보기
입력된 그래프 데이터를 인접 리스트로 구현한다.

모든 노드로 각각 DFS 탐색 알고리즘을 적용해 탐색을 수행한다. DFS를 실행할 때 현재 노드에서 연결된 노드 중 이미 방문한 노드가 나와 같은 집합이면 이분 그래프가 아닌 것으로 판별한다. 실행 결과가 이분 그래프가 아니면 이후 노드는 탐색하지 않는다.

이분 그래프 여부를 정답으로 출력한다.
테스트 케이스의 개수만큼 과정 1~3을 반복한다.
모든 노드로 DFS를 실행하는 이유는 여러 개의 부분 그래프로 이뤄진 케이스가 존재할 수 있기 때문이다.
슈도코드
코드 구현 - 파이썬
코드 구현 - 자바
Last updated