アルゴリズムとプログラミング

基本情報技術者試験有向グラフを次の辺リストで与える(u → v は u から v への辺)。 1→3, 2→3, 4→3,…

アルゴリズムとプログラミングアルゴリズムとプログラミング計算問題難易度:hard
有向グラフを次の辺リストで与える(u → v は u から v への辺)。 1→3, 2→3, 4→3, 2→5, 4→5 各ノードの入次数(そのノードへ入ってくる辺の本数)を数え、入次数が最大のノードの番号を求める。最大が同数のときは番号の小さいノードを選ぶ。次の擬似言語を実行したとき返り値 best はどれか。
○関数: maxInDegree(): 整数型
  整数型の配列: indeg ← {0, 0, 0, 0, 0}
  各辺 u→v について
    indeg[v] ← indeg[v] + 1
  整数型: i, best ← 1
  for (i を 2 から 5 まで 1 ずつ増やす)
    if (indeg[i] > indeg[best])
      best ← i
    endif
  endfor
  return best
ノード 5(入次数 2)
ノード 3(入次数 3)
ノード 2(入次数 0)
ノード 4
正解
イ.ノード 3(入次数 3)

辺の終点 v を数えると、ノード3へは 1→3, 2→3, 4→3 の 3 本、ノード5へは 2→5, 4→5 の 2 本、他は 0 本である。indeg={0,0,3,0,2} の最大はノード3(3本)なので best=3、すなわち イが正しい。

?選択肢ごとの解説

ア ×入次数 2 のノード5 であり、最大ではなく 2 番目に大きいノードを選んだ誤りである。
イ ○辺の終点 v を数えると、ノード3へは 1→3, 2→3, 4→3 の 3 本、ノード5へは 2→5, 4→5 の 2 本、他は 0 本である。indeg={0,0,3,0,2} の最大はノード3(3本)なので best=3、すなわち イが正しい。
ウ ×ノード2 は入次数 0 であり、辺の始点(出る側)を誤って数えた、入次数と出次数を取り違えた誤りである。
エ ×ノード4 も入次数 0 であり、入ってくる辺が 1 本もないノードを選んだ誤りである。
この問題の「深掘り・誤答の完全解説・覚え方」は、登録すると読めます。

基本情報技術者試験は全4,036問。公開しているのはその一部で、登録すると残りも一問ごとにAI解説つきで解けます。SRS暗記カード・全真模試・弱点診断まで。

登録は1分・クレジットカード不要。無料のまま練習・暗記カード・模試まで使えます。

作成・校閲:ukamiru編集部 · 基本情報技術者試験 過去問 · fe-b-algo-0154

【基本情報技術者試験】有向グラフを次の辺リストで与える(u → v は u から…|正解「ノード 3(入次数 3)」|ukamiru 過去問