Menu
CoddyTech

Graph Valid Tree

0からn-1まで番号が付けられたn個のノードと、無向辺のリストedgesが与えられます。各ペア[a, b]は、ノードaとノードbを結びます。

辺によってすべてのn個のノードが1つの木になる場合、つまり、すべてのノードから他のすべてのノードに到達でき、閉路がない場合はtrueを返します。それ以外の場合はfalseを返します。

関数

validTree(n: integer, edges: integer-2d-array) → boolean
ninteger
ノードの数。0 から n-1 まで番号が付けられている
edgesinteger-2d-array
無向辺。それぞれがペア [a, b] です
戻り値boolean
辺がすべての n 個のノードを1つの木に結合している場合は true、そうでない場合は false

制約

  • 2 ≤ n ≤ 104
  • 1 ≤ edges.length ≤ 5000
  • edges[i] = [a, b] で、0 ≤ a, b ≤ n-1 かつ a ≠ b
  • どの辺も、どちらの方向であっても二度現れることはありません。

例

入力
n = 5edges = [[0, 1], [0, 2], [0, 3], [1, 4]]
出力
true
説明
ノード0はノード1、2、3につながっており、ノード4はノード1から伸びています。4本の辺がループなしですべての5つのノードをつないでいるので、これは木です。
challenge icon

発展問題

グラフが木でない場合、木にするには辺をいくつ削除し、いくつ追加する必要がありますか? 1回の走査で両方を数えられますか?

コードをリセット
def validTree(n, edges):
    # ここにコードを書いてください

テスト #1

テスト #2

テスト #3

引数

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

期待される出力

true