여행하는 사업가 문제
시간 제한2초메모리 제한512 MB
연결된 무방향 그래프와 갱신 가능한 도시 가치가 주어질 때, 두 보행자가 도착할 수 있는 도시 가치 차이의 최솟값을 묻는 질의에 답한다.
문제
개의 도시가 있고 각 도시에는 1부터 까지 번호가 붙어 있다. 도시는 개의 양방향 도로로 연결되며 어떤 도시에서도 다른 모든 도시로 이동할 수 있다. 도시 는 경제값 를 가진다.
개의 질의가 순서대로 주어진다. 각 질의는 세 정수 , , 로 이루어진다.
이면 도시 의 경제값을 로 바꾼다.
이면 두 사업가가 각각 도시 와 도시 에서 출발한다고 가정한다. 두 사람은 음이 아닌 정수 를 함께 정하고 일 동안 매일 반드시 현재 도시와 인접한 도시로 이동한다. 제자리에 머무를 수는 없지만 이미 방문한 도시를 다시 방문할 수는 있다. 일이 지난 뒤 두 사람이 머무는 도시의 경제값 차이의 절댓값이 가장 작아지도록 하며 그 최솟값을 출력한다. 두 사람이 같은 도시에 머물 수도 있다. 는 각 질의마다 독립적으로 정한다.
입력
첫째 줄에 도시와 도로의 수 , 이 주어진다 (, ). 둘째 줄에 각 도시의 경제값 이 주어진다 (). 다음 개의 줄에는 도로가 연결하는 두 도시 , 가 주어진다 (, ). 어떤 도시에서도 다른 모든 도시로 이동할 수 있다. 다음 줄에는 질의의 수 가 주어진다 (). 다음 개의 줄에는 각 질의 , , 가 주어진다 (). 이면 이고 이며 이면 이다. 인 질의가 하나 이상 있다.
출력
인 각 질의에 대해 두 사업가가 도달할 수 있는 경제값 차이의 최솟값을 한 줄에 하나씩 출력한다. 의 값은 각 질의마다 독립이다.
힌트
가 커질 때 각 사업가가 도달할 수 있는 도시가 어떻게 달라지는지 살펴본다. 이웃 도시로 이동했다가 되돌아오면 이동 일수를 2만큼 늘릴 수 있으므로 도달 가능한 도시는 의 홀짝에 따라 정해진다. 그래프에 홀수 길이 사이클이 있으면 두 사업가는 항상 같은 도시에서 만날 수 있다. 그래프가 이분 그래프이면 각 사업가는 시작 도시와 의 홀짝에 따라 정해진 쪽에 머문다. 같은 쪽에서 출발한 두 사업가의 답은 항상 0이며 다른 쪽에서 출발한 경우에는 양쪽에 걸친 가장 가까운 경제값 쌍이 답이 된다.