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 |