여행하는 사업가 문제

연결된 무방향 그래프와 갱신 가능한 도시 가치가 주어질 때, 두 보행자가 도착할 수 있는 도시 가치 차이의 최솟값을 묻는 질의에 답한다.

어려움8그래프BFS이분 탐색정렬아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

NN개의 도시가 있고 각 도시에는 1부터 NN까지 번호가 붙어 있다. 도시는 MM개의 양방향 도로로 연결되며 어떤 도시에서도 다른 모든 도시로 이동할 수 있다. 도시 ii는 경제값 SiS_i를 가진다.

QQ개의 질의가 순서대로 주어진다. 각 질의는 세 정수 AiA_i, BiB_i, CiC_i로 이루어진다.

Ai=0A_i = 0이면 도시 BiB_i의 경제값을 CiC_i로 바꾼다.

Ai=1A_i = 1이면 두 사업가가 각각 도시 BiB_i와 도시 CiC_i에서 출발한다고 가정한다. 두 사람은 음이 아닌 정수 XX를 함께 정하고 XX일 동안 매일 반드시 현재 도시와 인접한 도시로 이동한다. 제자리에 머무를 수는 없지만 이미 방문한 도시를 다시 방문할 수는 있다. XX일이 지난 뒤 두 사람이 머무는 도시의 경제값 차이의 절댓값이 가장 작아지도록 하며 그 최솟값을 출력한다. 두 사람이 같은 도시에 머물 수도 있다. XX는 각 질의마다 독립적으로 정한다.

입력

첫째 줄에 도시와 도로의 수 NN, MM이 주어진다 (1N1000001 \le N \le 100000, 1M2000001 \le M \le 200000). 둘째 줄에 각 도시의 경제값 S1,S2,,SNS_1, S_2, \dots, S_N이 주어진다 (0Si10000000000 \le S_i \le 1000000000). 다음 MM개의 줄에는 도로가 연결하는 두 도시 uiu_i, viv_i가 주어진다 (1ui,viN1 \le u_i, v_i \le N, uiviu_i \ne v_i). 어떤 도시에서도 다른 모든 도시로 이동할 수 있다. 다음 줄에는 질의의 수 QQ가 주어진다 (1Q1000001 \le Q \le 100000). 다음 QQ개의 줄에는 각 질의 AiA_i, BiB_i, CiC_i가 주어진다 (0Ai10 \le A_i \le 1). Ai=0A_i = 0이면 1BiN1 \le B_i \le N이고 0Ci10000000000 \le C_i \le 1000000000이며 Ai=1A_i = 1이면 1Bi,CiN1 \le B_i, C_i \le N이다. Ai=1A_i = 1인 질의가 하나 이상 있다.

출력

Ai=1A_i = 1인 각 질의에 대해 두 사업가가 도달할 수 있는 경제값 차이의 최솟값을 한 줄에 하나씩 출력한다. XX의 값은 각 질의마다 독립이다.

힌트

XX가 커질 때 각 사업가가 도달할 수 있는 도시가 어떻게 달라지는지 살펴본다. 이웃 도시로 이동했다가 되돌아오면 이동 일수를 2만큼 늘릴 수 있으므로 도달 가능한 도시는 XX의 홀짝에 따라 정해진다. 그래프에 홀수 길이 사이클이 있으면 두 사업가는 항상 같은 도시에서 만날 수 있다. 그래프가 이분 그래프이면 각 사업가는 시작 도시와 XX의 홀짝에 따라 정해진 쪽에 머문다. 같은 쪽에서 출발한 두 사업가의 답은 항상 0이며 다른 쪽에서 출발한 경우에는 양쪽에 걸친 가장 가까운 경제값 쌍이 답이 된다.