통행 차단
시간 제한2초메모리 제한512 MB
트리와 추가 가중 간선이 주어질 때, 각 트리 간선을 제거해 생기는 두 조각을 다시 연결하는 추가 간선의 최소 가중치를 구한다.
문제
농부 존의 농장에는 목초지가 개 있고(), 길이가 1인 양방향 길 개가 목초지를 잇는다. 이 길만 따라가도 어느 목초지에서 어느 목초지로든 갈 수 있다.
농장은 연결되어 있지만, 존은 길 하나가 막히는 상황을 걱정한다. 길 하나가 막히면 농장은 목초지 두 무리로 갈라지고, 소는 같은 무리 안에서만 오갈 수 있다. 그래서 존은 양방향 길 개를 더 놓는다(). 새로 놓은 길의 길이는 이하의 양의 정수다. 소는 원래 있던 길 중 하나가 막히기 전까지는 원래 있던 길만 쓴다.
원래 있던 길 하나가 막히면 농장은 두 조각으로 갈라진다. 존은 새로 놓은 길 중 하나를 골라 두 조각을 다시 이어서, 소가 다시 어느 목초지에서 어느 목초지로든 갈 수 있게 한다.
원래 있던 길마다 그 길을 대신할 가장 짧은 길의 길이를 구하라.
입력
첫째 줄에 과 이 주어진다. 다음 개 줄에는 원래 있던 길이 정수 , 로 주어진다. 두 목초지 와 를 잇는 길이고, 이며 두 값은 이상 이하다. 이어지는 개 줄에는 새로 놓은 길이 정수 , , 로 주어진다. 목초지 와 를 잇고 길이가 인 길이다. 두 목초지 사이에 놓인 길은 많아야 하나다.
출력
개 줄을 출력한다. 번째 줄에는 입력에서 번째로 주어진 원래 길이 막혔을 때 농장을 다시 잇는 가장 짧은 새 길의 길이를 출력한다. 대신할 길이 없으면 -1을 출력한다.