CSES - Cycle Finding | Tìm chu trình

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 1600 (p) Thời gian: 1.0s Bộ nhớ: 512M Input: bàn phím Output: màn hình

Bạn được cho một đồ thị có hướng, và nhiệm vụ của bạn là hãy xác định xem đồ thị đó có chứa một chu trình âm hay không, và đồng thời cho một ví dụ của một chu trình như vậy.

Input

  • Dòng đầu vào đầu tiên có hai số nguyên \(n\)\(m\): số lượng nút và cạnh. Các nút được đánh số \(1, 2, \ldots, n\)
  • Sau này, có \(m\) dòng mô tả các cạnh. Mỗi dòng có ba số nguyên \(a\), \(b\), và \(c\): có một cạnh từ nút \(a\) đến nút \(b\) mà độ dài của nó là \(c\)

Constraints

  • \(1 \leq n \leq 2500\)
  • \(1 \leq m \leq 5000\)
  • \(1 \leq a,b \leq n\)
  • \(-10^9 \leq c \leq 10^9\)

Output

  • Nếu đồ thị chứa một chu trình âm, đầu tiên in ra YES, và sau đó là các nút trong chu trình theo thứ tự của chúng. Nếu có vài chu trình âm, bạn có thể in bất kì trong số chúng. Nếu không có chu trình âm, in ra NO

Example

Test 1

Input
4 5
1 2 1
2 4 1
3 1 1
4 1 -3
4 3 -2
Output
YES
1 2 4 1

Bình luận (1)

Mới nhất
Tải bình luận...