Menu
CoddyTech

Graph Valid Tree

Bạn có n nút, được đánh số từ 0 đến n-1, và một danh sách edges gồm các cạnh vô hướng. Mỗi cặp [a, b] nối nút a với nút b.

Trả về true nếu các cạnh tạo thành một cây gồm tất cả n nút: mỗi nút có thể đi đến mọi nút khác và không có chu trình. Nếu không, trả về false.

Hàm

validTree(n: integer, edges: integer-2d-array) → boolean
ninteger
số lượng nút, được đánh số từ 0 đến n-1
edgesinteger-2d-array
các cạnh vô hướng, mỗi cạnh là một cặp [a, b]
Trả vềboolean
đúng nếu các cạnh nối tất cả n nút thành một cây, sai nếu không

Ràng buộc

  • 2 ≤ n ≤ 104
  • 1 ≤ edges.length ≤ 5000
  • edges[i] = [a, b] với 0 ≤ a, b ≤ n-1 và a ≠ b
  • Không có cạnh nào xuất hiện hai lần, dù theo hướng nào.

Ví dụ

Đầu vào
n = 5edges = [[0, 1], [0, 2], [0, 3], [1, 4]]
Đầu ra
true
Giải thích
Nút 0 nối với các nút 1, 2 và 3, còn nút 4 nối với nút 1. Bốn cạnh nối cả năm nút mà không tạo thành vòng lặp, nên đây là một cây.
challenge icon

Câu hỏi mở rộng

Khi đồ thị không phải là cây, bạn cần xóa bao nhiêu cạnh và thêm bao nhiêu cạnh để biến nó thành cây? Bạn có thể đếm cả hai trong một lượt duyệt không?

Đặt lại code
def validTree(n, edges):
    # Viết code tại đây

Kiểm thử #1

Kiểm thử #2

Kiểm thử #3

Đối số

n = 5
edges = [[0, 1], [0, 2], [0, 3], [1, 4]]

Đầu ra mong đợi

true