336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

이분그래프의 정의는 정점을 두 그룹으로 나누었을 때 같은 그룹 정점을 잇는 간선이 존재하지 않는 것.



이분 그래프는 각 정점에 색을 두가지만 칠해서 두 그룹으로 나눌 수 있는지 확인을 해주면 된다.


여러가지 방법을 할 수 있을텐데.. 

큐를 사용해서 BFS 탐색을 한다. 

큐에 넣는 조건은 아직 정점에 색을 칠하지 않았을 경우 : 색을 칠하며, 큐에 넣는다.

여기서 색을 칠하는 건 int형으로 값을 0 또는 1로 지정하는 것 색이 칠해져있지 않는 경우 -1

이 경우에 색이 칠해져있는 정점과 인접해져있는 경우

1) 현재 색칠된 정점과 색이 다름 ( == 통과, 이분그래프 여부를 계속 판단해 봐야함. )

2) 현재 색칠된 정점과 색이 같음 ( == 이분그래프가 아님 )


그리고 두 그룹으로 나눌 수 있지만, 

같은 그룹에 있는 정점들이 간선을 타고, 이동할 수 없기도 하기 때문에 그런 경우가 발생하지 않도록 큐가 비어진 경우 색칠하지 않은 정점을 찾아서 다시 큐에 넣는다. 


이 과정을 거쳐서 모든 정점에 색칠이 끝났다면? 이분그래프이다.

아니라면 이분그래프가 아니다.



'PSNote > Problem Solving' 카테고리의 다른 글

[ALGOSPOT]LIS  (0) 2017.07.17
[BOJ-10216]Count Circle Groups  (0) 2017.07.17
[BOJ-2231]분해합  (0) 2017.07.17
[BOJ-12852]1로만들기2  (0) 2017.07.17
[BOJ-1463]1로만들기  (0) 2017.07.17

+ Recent posts