Menu
CoddyTech

Network Delay Time

Một mạng có n nút được đánh nhãn từ 1 đến n. Liên kết times[i] = [u, v, w] truyền tín hiệu từ nút u đến nút v trong w đơn vị thời gian, chỉ theo chiều đó.

Một tín hiệu rời nút k vào thời điểm 0 và truyền dọc theo mọi liên kết mà nó có thể đi qua. Hãy trả về thời điểm nút cuối cùng nhận được tín hiệu, hoặc -1 nếu có nút không bao giờ nhận được tín hiệu.

Hàm

networkDelayTime(times: integer-2d-array, n: integer, k: integer) → integer
timesinteger-2d-array
các liên kết có hướng, mỗi liên kết có dạng [u, v, w]
ninteger
số lượng nút
kinteger
nút gửi tín hiệu
Trả vềinteger
thời điểm nút cuối cùng nhận được tín hiệu, hoặc -1

Ràng buộc

  • 2 ≤ n ≤ 3000
  • 1 ≤ times.length ≤ 4000
  • times[i].length = 3
  • 1 ≤ u, v ≤ n và u ≠ v
  • 0 ≤ w ≤ 100
  • Không có hai liên kết nào cùng có u và v.
  • 1 ≤ k ≤ n

Ví dụ

Đầu vào
times = [[1, 2, 4], [1, 3, 1], [3, 2, 2], [2, 4, 1]]n = 4k = 1
Đầu ra
4
Giải thích
Liên kết trực tiếp đến nút 2 sau 4 đơn vị thời gian, nhưng đường đi qua nút 3 đến nơi sau 1 + 2 = 3 đơn vị thời gian. Nút 4 nhận tín hiệu cuối cùng, sau 3 + 1 = 4 đơn vị thời gian.
challenge icon

Câu hỏi mở rộng

Giả sử tín hiệu yếu dần sau khi truyền qua m liên kết. Làm thế nào để tìm thời điểm nút cuối cùng nhận được tín hiệu trong giới hạn đó?

Đặt lại code
def networkDelayTime(times, n, k):
    # Viết code ở đây

Kiểm thử #1

Kiểm thử #2

Kiểm thử #3

Đối số

times = [[1, 2, 4], [1, 3, 1], [3, 2, 2], [2, 4, 1]]
n = 4
k = 1

Đầu ra mong đợi

4