1338: 성호가 먹고 싶던 마카롱
문제 설명
성호는 가끔 마카롱이 먹고 싶지만, 나가기 귀찮을 때가 있다. 하지만 성호는 나갈 필요가 없다.
경기과학고 학생들이 항상 대기 중이기 때문이다. 성호가 “마카롱이 먹고 싶구나”라고 말하면 모든 학생들이 일제히 마카롱을 사들고 성호의 집 앞에 모인다.
그래서 성호는 버리는 마카롱이 너무 많아졌다. 그래서 성호는 이제 “마카롱이 한 개만 먹고 싶구나”라고 말한다.
그러면 각자의 집에서 마카롱 가게를 들렸다 성호의 집에 가는 길이 가장 가까운 학생 1명만 움직인다. 신속한 배달은 언제나 중요하다.
성호의 집 주변에는 N개의 마을과 마을 사이를 잇는 M개의 도로가 있다.
어떤 마을 두 곳을 골라도 도로를 통해 이동할 수 있음이 보장된다. (즉, 연결그래프이다)
성호는 1번 마을에 살고 있다. 경기과학고 학생은 A명이고 마카롱 가게는 B개 있으며, 같은 마을에는 최대 한 명의 학생과 최대 하나의 마카롱 가게가 있다.
가게의 마카롱이 마음에 들지 않으면 성호는 마카롱 가게를 없앨 수도 있고, 특정한 위치에 마카롱 가게를 새로 만들 수도 있다.
그때마다 경기과학고 학생들은 성호에게 마카롱을 배달해주기 위한 가장 짧은 거리를 알아야 한다.
입력 설명
첫 줄에 N, M, A, B, Q가 주어진다. (3 ≤ N, M, Q ≤ 300000, 1 ≤ A, B < N)
두 번째 줄부터 M개의 줄에 걸쳐 간선을 이루는 두 점과 그 비용 u, v, c(1 ≤ u, v ≤ N, 1 ≤ c ≤ 1000000000)가 주어진다.
M+2번째 줄에 A개의 수 a_1, a_2, ... a_A (2 ≤ a_i ≤ N)가 주어진다. a_i번 마을에 i번째 경기과학고 학생이 살고 있다는 뜻이다.
M+3번째 줄에 B개의 수 b_1, b_2, ... b_B (2 ≤ b_i ≤ N)가 주어진다. b_i번 마을에 I번째 마카롱 가게가 있다는 뜻이다.
M+4번째 줄부터 Q개의 줄에 쿼리의 정보가 주어진다. 쿼리의 형식은 다음과 같다.
t : t번 마을에 마카롱 가게가 있다면 철거한다. 마카롱 가게가 없었다면 새로 짓는다. (2 ≤ t ≤ N)
출력 설명
쿼리가 주어질 때마다, 경기과학고 학생이 마카롱을 배달할 수 있는 가장 짧은 거리를 출력한다.
입력 예시 Copy
6 8 2 2 5
2 3 9
1 2 23
3 1 11
6 2 3
3 5 17
1 5 1
3 4 22
6 5 29
2 4
6 3
5
3
6
5
4
출력 예시 Copy
20
22
22
-1
33