최단 경로 아니면 음수 사이클
면접 대비시간 제한4초메모리 제한128 MB
방향 가중치 그래프와 시작 정점 s가 주어질 때, 음수 사이클이 있으면 그 사이클을 찾고 없으면 s에서 각 정점까지의 최단 거리를 구합니다.
문제
개의 정점과 개의 간선을 가진 그래프가 주어진다. 정점은 의 번호로 구분된다. 정점 도 주어진다. 모든 정점 에 대해 에서 로 가는 경로가 존재한다.
번 간선은 번 정점에서 번 정점으로 향하며, 정수 의 가중치를 가진다. 는 음수일 수 있다.
그래프에 음수 사이클이 있으면, 그중 아무거나 하나를 반환하라.
음수 사이클이 없다면, 모든 정점 에 대해 에서 로 가는 최단 경로의 길이를 출력하라.
입력
첫 번째 줄에 정수 , , 가 주어진다.
이후 개의 줄에 각각 , , 가 주어진다.
출력
그래프에 음수 사이클이 있는 경우:
- 첫 번째 줄에 CYCLE을 출력하라.
- 두 번째 줄에 음수 사이클의 간선 수 를 출력하라. 이다.
- 세 번째 줄에 개의 정수 를 출력하라. 와 은 사이클의 번째 간선의 시작 정점과 끝 정점이다. 이며, 사이클은 각 간선을 최대 한 번만 포함한다.
그래프에 음수 사이클이 없는 경우:
- 첫 번째 줄에 PATH를 출력하라.
- 두 번째 줄에 개의 정수 을 출력하라. 는 에서 로 가는 최단 경로의 가중치 합이다.
제한
- ()
- 모든 정점 에 대해 에서 로 가는 경로가 존재한다.