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