인구 이동이 얼마나 일어나는지 알아내야하는 문제이다. 인구 이동은 연합이 생성되었을 때 일어나기 때문에 우선 현재 상황에 맞는 연합을 생성해줘야한다. 이 때 BFS 를 통해 연합이 가능한 도시들을 union 에 묶어준 뒤 해당 변수의 특성에 따라서 연산을 해주면된다.
주어진 2차원 배열에 여러가지 연합이 생성될 가능성이 있기 때문에 모든 좌표에서 연합 생성이 가능한 지를 판단하기 위해 모든 좌표를 돌면서 BFS 를 실행해준다. BFS 를 통해 연합이 생성되었을 경우 연합에 해당되는 도시의 인구수를 수정해준 뒤 아직 방문하지 않았던 도시를 찾고 만약 연합 생성이 가능하다면 위 연산을 반복해준다.
모든 좌표에 대한 탐색이 끝난 후 변한 2차원 배열에서 다시 한 번 인구 이동이 발생할 수 있기 때문에 똑같은 연산을 반복한다. 만약 반복한 연산에서 연합이 하나도 생성되지 않았다면, 반복문을 탈출한 뒤 인구 이동이 일어난 횟수를 출력해주면된다.