Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonのツリーで、距離が正確にkである頂点の個別のペアの数を見つけます


整数kがあり、n個のノードを持つツリーがあるとすると、正確なk距離を持つ頂点の個別のペアの数を数える必要があります。

したがって、入力がk=2のような場合

Pythonのツリーで、距離が正確にkである頂点の個別のペアの数を見つけます

その場合、出力は4になります

これを解決するには、次の手順に従います-

  • N:=5005

  • グラフ:=サイズNの隣接リスト

  • Vertex_count:=サイズ505x5005の2次元行列

  • res:=0

  • 関数insert_edge()を定義します。これにはx、yが必要です

    • グラフの最後にyを挿入します[x]

    • グラフの最後にxを挿入します[y]

  • 関数dfs()を定義します。これにはv、親が必要です

  • Vertex_count [v、0]:=1

  • グラフ[v]の各iについて、実行

    • 私が親と同じでない場合は、

      • dfs(i、v)

      • 1からk+1の範囲のjの場合、実行

        • res:=res + Vertex_count [i、j --1] * Vertex_count [v、k --j]

      • 1からk+1の範囲のjの場合、実行

        • 頂点カウント[v、j]:=頂点カウント[v、j] +頂点カウント[i、j-1]

理解を深めるために、次の実装を見てみましょう-

N = 5005
graph = [[] for i in range(N)]
vertex_count = [[0 for i in range(505)] for i in range(N)]
res = 0
def insert_edge(x, y):
   graph[x].append(y)
   graph[y].append(x)
def dfs(v, parent):
   global res
   vertex_count[v][0] = 1
   for i in graph[v]:
      if (i != parent):
         dfs(i, v)
         for j in range(1, k + 1):
            res += vertex_count[i][j - 1] * vertex_count[v][k - j]
         for j in range(1, k + 1):
            vertex_count[v][j] += vertex_count[i][j - 1]
k = 2
insert_edge(1, 2)
insert_edge(2, 3)
insert_edge(3, 4)
insert_edge(2, 5)
dfs(1, 0)
print(res)
入力
k = 2
insert_edge(1, 2)
insert_edge(2, 3)
insert_edge(3, 4)
insert_edge(2, 5)

出力

4

  1. Pythonでサイズnxmの長方形の内側に配置できるサイズ2x1の長方形の数を見つけます

    2つの値nとmがあるとします。サイズnxmの長方形の内側に設定できるサイズ2x1の長方形の数を見つける必要があります。考慮しなければならない条件はほとんどありません- 2つの小さな長方形を重ねることはできません。 すべての小さな長方形は、大きな長方形の内側に完全にあります。大きい方の長方形の端に触れることは許可されています。 したがって、入力が次のような場合 n =3、m =3の場合、出力は4になります。 これを解決するには、次の手順に従います- n mod 2が0と同じ場合、 return(n / 2)* m それ以外の場合、m mod 2

  2. リスト内の最小数を見つけるPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −リストが表示されます。リストで利用可能な最小の番号を表示する必要があります ここでは、リストを並べ替えて最小の要素を取得するか、組み込みのmin()関数を使用して最小の要素を取得できます。 次に、以下の実装の概念を観察しましょう- 例 list1 = [101, 120, 104, 145, 99] # sorting using built-in function list1.sort() print("Smallest element is:", list1[0]) 出力 Smal