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