There and Back Again
시간 제한2초메모리 제한1024 MB
1번 도시에서 n번 도시까지 갔다가 돌아오는 두 이동 경로의 도로 집합이 서로 달라야 할 때, 두 이동 시간의 합이 가장 작은 값을 구합니다. 조건을 만족하는 쌍이 없으면 -1을 출력합니다.
문제
도시는 번부터 번까지 번호가 붙은 개가 있습니다. 2024 ICPC Asia Pacific Championship 대회는 도시 번인 하노이에서 열립니다.
도로는 번부터 번까지 번호가 붙은 개의 양방향 도로가 있습니다. 도로 는 도시 와 를 잇고, 어느 방향으로 이동하든 의 시간이 걸립니다. 각 도로는 서로 다른 두 도시를 잇고, 서로 다른 도로는 서로 다른 도시 쌍을 잇습니다.
당신은 도시 번에 삽니다. 대회에 참가하려고 도로를 따라 도시 번까지 간 뒤, 다시 도로를 따라 도시 번으로 돌아오려 합니다. 같은 경로를 되풀이하면 지루하므로, 두 이동의 경로는 달라야 합니다. 두 경로가 다르다는 것은 한 경로가 지나는 서로 다른 도로의 집합이 다른 경로의 도로 집합과 다르다는 뜻입니다.
각 이동에서는 같은 도시나 같은 도로를 여러 번 지나도 됩니다. 목적지인 도시 번이나 도시 번에 도착한 뒤에도 계속 이동해도 됩니다. 이동 시간은 지나간 도로들의 시간을 모두 더한 값입니다. 한 도로를 여러 번 지나면 그 도로의 시간도 지난 횟수만큼 더합니다.
위 조건을 만족하는 두 이동의 총 이동 시간의 최솟값을 구하세요. 조건을 만족할 수 없다면 그 사실을 알려주세요.
입력
첫 줄에 두 정수 과 이 주어집니다 (; ). 이어지는 개의 줄에는 각각 세 정수 , , 가 주어집니다 (; ). 서로 다른 도로는 서로 다른 도시 쌍을 잇습니다.
출력
조건을 만족하는 두 이동의 총 이동 시간의 최솟값을 정수 하나로 출력합니다. 그런 두 이동이 없으면 을 출력합니다.