만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

최단 경로 아니면 음수 사이클

면접 대비

시간 제한4초메모리 제한128 MB

요약
방향 가중치 그래프와 시작 정점 s가 주어질 때, 음수 사이클이 있으면 그 사이클을 찾고 없으면 s에서 각 정점까지의 최단 거리를 구합니다.
난이도

보통10점 중 4점

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

문제

NN개의 정점과 MM개의 간선을 가진 그래프가 주어진다. 정점은 0,1,…,N−10, 1, \ldots, N-1의 번호로 구분된다. 정점 ss도 주어진다. 모든 정점 0≤i≤N−10 \le i \le N-1에 대해 ss에서 ii로 가는 경로가 존재한다.

ii번 간선은 aia_i번 정점에서 bib_i번 정점으로 향하며, 정수 cic_i의 가중치를 가진다. cic_i는 음수일 수 있다.

그래프에 음수 사이클이 있으면, 그중 아무거나 하나를 반환하라.

음수 사이클이 없다면, 모든 정점 0≤t≤N−10 \le t \le N-1에 대해 ss에서 tt로 가는 최단 경로의 길이를 출력하라.

입력

첫 번째 줄에 정수 NN, MM, ss가 주어진다.

이후 MM개의 줄에 각각 aia_i, bib_i, cic_i가 주어진다.

출력

그래프에 음수 사이클이 있는 경우:

  • 첫 번째 줄에 CYCLE을 출력하라.
  • 두 번째 줄에 음수 사이클의 간선 수 kk를 출력하라. k≥1k \ge 1이다.
  • 세 번째 줄에 k+1k+1개의 정수 u0,u1,…,uku_0, u_1, \ldots, u_k를 출력하라. uiu_i와 ui+1u_{i+1}은 사이클의 ii번째 간선의 시작 정점과 끝 정점이다. u0=uku_0 = u_k이며, 사이클은 각 간선을 최대 한 번만 포함한다.

그래프에 음수 사이클이 없는 경우:

  • 첫 번째 줄에 PATH를 출력하라.
  • 두 번째 줄에 NN개의 정수 dist0,dist1,…,distN−1dist_0, dist_1, \ldots, dist_{N-1}을 출력하라. distidist_i는 ss에서 ii로 가는 최단 경로의 가중치 합이다.

제한

  • 2≤N≤20 0002 \le N \le 20\,000
  • 1≤M≤20 0001 \le M \le 20\,000
  • 0≤s<N0 \le s < N
  • 0≤ai,bi≤N0 \le a_i, b_i \le N
  • (ai,bi)≠(aj,bj)(a_i, b_i) \neq (a_j, b_j) (i≠ji \neq j)
  • −104≤ci≤104-10^4 \le c_i \le 10^4
  • 모든 정점 0≤i≤N−10 \le i \le N-1에 대해 ss에서 ii로 가는 경로가 존재한다.

예제2

  1. 예제 1

    입력
    3 4 0
    0 1 4
    0 2 3
    1 2 -1
    2 0 -2
    
    예상 출력
    PATH
    0 4 3
    
  2. 예제 2

    입력
    3 4 0
    0 1 4
    0 2 3
    1 2 -4
    2 0 -2
    
    예상 출력
    CYCLE
    3
    0 1 2 0