플레5 BFS인데 아이디어 자체는 골드 상위권 BFS 문제들보다 쉬웠다.
근데 구현에서 너무 오류를 많이 해서 7번만에 겨우 풀었다
대충 아이디어를 설명하자면
우선 백조들이 갈 수 있는 땅을 BFS로 구해서 vis에 기록해놓는다. 이 때 백조 종류에 따라 수를 다르게 기록해놓는다. 0은 두 백조 모두 방문안한 곳, 1은 첫번째 백조가 방문, 2는 두번째 백조가 방문한 곳으로 기록한다. 백조 BFS를 돌릴 때 사용하는 queue는 q다.
그 이후 물에 대한 BFS를 돌려서 물의 영역을 확장한다. 이 때 정확히 1번만 BFS를 돌려야 한다.(물의 영역 거리가 딱 1만큼만 늘어나도록) 그렇기 때문에 추가되는 점들을 wq1이라는 queue에 추가해야한다.(왜냐면 같은 queue에 추가해버리면 끝이 안나기 때문에..)
그럼 wq1들은 녹아서 새로 생긴 공간들이다. 이 때 각 공간들을 wq에 다시 추가해서 나중에 물에 대한 BFS를 돌릴 때 사용해야 하고, 또 이 공간들은 백조가 새롭게 갈 수 있는 공간들일 수 있다. 그렇기 때문에 상하좌우를 다 살펴서 백조가 이미 방문했던 공간인지를 확인하고 그 공간에 맞게 새로 추가된 공간도 해당하는 백조가 방문할 수 있도록 마킹해주면 된다.