백준/BFS

백준 9466번

Reenact 2022. 2. 13. 23:28

BFS문제라는데 BFS로 푼 거 같지가 않다...굳이 따지자면 지나온 점들을 체크하는 게 BFS랑 겹치는 부분이다

방문하지 않은 점들의 다음 점들을 확인해가면서, 다음점이 방문했던 점인 경우 2가지로 나눠 문제를 해결할 수 있다.

첫 번째는 다음 점(nx)이 이전 지나온 점들과 같은 경우 Cycle의 일부가 완성되므로 Cycle에 도달하기 전까지의 점들은 팀을 이룰 수 없는 것이라 그 전까지의 점의 개수를 더해준다. 

두 번째로는 다음 점이 이전 지나온 점들과 다르면서 기존에 방문했던 점의 경우인데, 이 경우 지나온 점들 모두가 Cycle에 포함될 수가 없으니 팀을 이룰 수 없어서 지나온 점들을 모두 더해준다.

vis를 -1로 초기화시키고 진행하므로 vis에 각 점들이 1번씩만 찍혀서 O(N)으로 문제를 풀 수 있다. 

'백준 > BFS' 카테고리의 다른 글

백준 1600번  (0) 2022.02.14
백준 13549번  (0) 2022.02.14
백준 2146번  (0) 2022.02.14
백준 5427번  (0) 2022.02.11
백준 5014번  (0) 2022.02.11