빠른 알고리즘
시간 제한2초메모리 제한2048 MB
약한 연결된 방향 그래프에서 트리보다 간선이 최대 1500개 많을 때, 가중치 합이 가장 작은 방향 사이클을 찾아 그 값을 출력합니다. 사이클이 없으면 -1을 출력합니다.
문제
Little I는 유향 그래프에서 최소 사이클을 시간에 찾는 알고리즘을 고안했다. 이제 그는 여러분의 실력을 시험하려 한다.
정점 개와 간선 개로 이루어진 유향 그래프가 주어진다. 각 간선에는 양의 정수 가중치가 있다. 간선 가중치의 합이 최소가 되는 사이클을 찾아, 그 합의 최솟값을 출력하라. 사이클이 없으면 그 사실을 보고하라.
알고리즘을 모를 수 있으므로, Little I는 조건을 완화했다. 입력 그래프는 약한 연결 그래프임이 보장되고, 은 그리 크지 않다. 방향 간선을 모두 무방향 간선으로 바꿨을 때 연결된 무방향 그래프가 되면 약한 연결 그래프이다.
입력
첫째 줄에 정점의 수 과 간선의 수 이 주어진다 (, ).
이어지는 개의 줄에는 정수 , , 가 주어진다 (, ). 이는 정점 에서 로 향하고 가중치가 인 간선을 뜻한다. 그래프는 약한 연결 그래프이다.
출력
최소 사이클의 길이를 한 줄에 출력한다. 사이클이 없으면 을 출력한다.
힌트
첫 번째 예제에서 최소 사이클은 이다.