운동

시간 제한2초메모리 제한192 MB

요약
정점이 최대 400개인 방향 그래프에서 최소 비용 사이클을 찾는 문제로, 플로이드-워셜 방식으로 풀 수 있습니다.
난이도

보통10점 중 4점

유형
최단 경로, 그래프, 동적 계획법
정답자
아직 제출이 없습니다

문제

V개의 마을과 E개의 일방통행 도로로 이루어진 도시가 있다. 마을은 1번부터 V번까지 번호가 붙어 있다.

도로를 따라 운동 경로를 잡으려 한다. 운동을 마친 뒤 시작한 마을로 돌아와야 하므로, 하나 이상의 도로를 따라 출발점으로 되돌아오는 사이클을 찾아야 한다. 가능한 사이클 중에서 지나간 도로 길이의 합이 가장 작은 값을 구하라.

두 마을 사이를 서로 반대 방향의 도로로 오가는 경우도 사이클에 포함된다.

입력

첫째 줄에 마을의 수 V와 도로의 수 E가 빈칸을 사이에 두고 주어진다. (2 <= V <= 400, 0 <= E <= V(V-1))

다음 E개의 줄에는 정수 a, b, c가 주어진다. 이는 a번 마을에서 b번 마을로 가는 길이 c의 일방통행 도로를 뜻한다. 거리는 10,000 이하의 자연수이며, 같은 (a, b) 쌍은 두 번 이상 주어지지 않는다.

출력

최소 사이클의 도로 길이 합을 출력한다. 가능한 사이클이 없으면 -1을 출력한다.

예제1

  1. 예제 1

    입력
    3 4
    1 2 1
    3 2 1
    1 3 5
    2 3 2
    
    예상 출력
    3