전초기지 경로 탐색
시간 제한2초메모리 제한128 MB
보유 탄약으로 감당 가능한 범위에서 조우 횟수가 가장 적은 보급 전초기지로 향하는 안전 경로를 구합니다.
문제
도시가 좀비에게 점령당했고, 당신의 팀은 보급품이 거의 떨어졌다. 꼼꼼한 정찰과 계획 끝에 안전한 전초기지 목록과 각 도로에서 목격된 좀비 수를 정리한 지도를 손에 넣었다. 전초기지는 모두 같은 무전망에 속해 있고, 각자의 무전 호출부호를 지명으로 쓴다.
팀이 챙긴 탄약은 한정되어 있어서 일정 규모까지의 좀비 무리만 막아낼 수 있다. 탄약 한 발은 한 번의 이동에서 좀비 한 마리를 막아낸다. 도로 하나를 안전하게 지나가려면 그 도로에서 마주치는 좀비 수만큼 탄약을 써야 한다. 정찰 자료를 보고, 필요한 보급품이 있는 전초기지까지 가는 안전한 경로 중에서 좀비를 가장 적게 마주치는 경로를 찾아라.
출발지는 목록의 첫 번째 전초기지이고, 그곳에 있는 탄약을 모두 가지고 출발한다. 필요한 보급품은 없지만 탄약이 있는 전초기지가 출발지 말고 최대 한 곳 더 있을 수 있다. 그 전초기지까지 이동하면 거기 있는 탄약을 전부 챙길 수 있다. 필요한 보급품이 있는 전초기지는 몇 곳이든 있을 수 있지만, 그중 한 곳에만 도착하면 된다.
같은 도로를 여러 번 지나야 한다면 지날 때마다 처음과 같은 수의 좀비를 다시 마주치고, 그 좀비도 마주친 좀비 수에 그대로 더해진다. 좀비는 총알로 쉽게 죽지 않는다.
입력
첫째 줄에 테스트 케이스의 수 ()가 주어진다.
각 테스트 케이스의 첫째 줄에는 전초기지의 수 ()과 도로의 수 ()이 공백으로 구분되어 주어진다.
이어지는 개의 줄에는 전초기지 정보가 한 줄에 하나씩 주어진다. 각 줄에는 호출부호, 그 전초기지에 있는 탄약의 양 (), 필요한 보급품이 있는지를 나타내는 문자열이 순서대로 주어진다. 호출부호는 알파벳 대문자 A부터 Z까지와 숫자 0부터 9까지로 이루어진 6글자이고, 마지막 문자열은 yes 또는 no이다. 목록의 첫 번째 전초기지가 출발지이다.
이어지는 개의 줄에는 도로 정보가 한 줄에 하나씩 주어진다. 각 줄에는 도로가 잇는 두 전초기지의 호출부호와 그 도로에서 마주치는 좀비의 수 ()가 순서대로 주어진다. 도로는 양방향으로 지날 수 있다.
출력
각 테스트 케이스마다 한 줄에, 필요한 보급품이 있는 전초기지까지 가는 안전한 경로에서 마주치는 좀비 수의 최솟값을 출력한다. 안전한 경로가 하나도 없으면 대신 No safe path를 출력한다.