一見複雑な問題に見えますが、難しい問題ではないので気負わずに取り組みましょう。「関数edgesToMatrixは、引数edgeListで辺の配列を、引数nodeNumでグラフの頂点の個数をそれぞれ受け取り、隣接行列を表す整数型の二次元配列を返す」とあります。
例えば、辺の配列{{1, 3}, {1, 4}, {3, 4}, {2, 4}, {4, 5}}を引数とした場合、設問の図2の二次元配列を返すプログラムです。
戻り値となる二次元配列は隣接行列で、i行j列とj行i列には同じ値が入ります。
例えば、配列{{1, 3}, {1, 4}, {3, 4}, {2, 4}, {4, 5}}のうち{1, 3}は、二次元配列の1行3列と3行1列に「1」を入れます。
それでは、プログラムの内容を見てみましょう。
・関数名：edgesToMatrix　引数名：edgeList、nodeNum
・変数：adjMatrix、i、u、v
・adjMatrixには、二次元配列{nodeNum行nodeNum列の0}を代入します。
ここでは、引数edgeListを{{1, 3}, {1, 4}, {3, 4}, {2, 4}, {4, 5}}として考えます。このとき、引数nodeNumは、グラフの頂点の個数なので「5」です。したがって、変数adjMatrixには、5行5列の「0」が入った二次元配列を代入します。
①：繰返し処理の条件は「変数iを1から5まで1ずつ増やす」になる
②：「i = 1」のとき、変数uに、二次元配列edgeListの1番目の配列{1, 3}の、1つめの要素「1」を代入する
③：「i = 1」のとき、変数vに、二次元配列edgeListの1番目の配列{1, 3}の、2つめの要素「3」を代入する
配列{1, 3}のとき、変数adjMatrixの1行3列と3行1列に「1」を入れたいので、uとvを使ってこれを表すと、以下になります。
adjMatrix[u, v] ← 1
adjMatrix[v, u] ← 1
「i = 2」以降も、同様に考えることができます。よって、選択肢エが正解です。
「i = 1」のときの他の選択肢も確認します。
ア. 変数adjMatrixの1行1列に「1」が入ってしまうため、誤りです。
イ. 変数adjMatrixの1行1列と3行3列に「1」が入ってしまうため、誤りです。
ウ. 変数adjMatrixの1行3列にしか「1」が入らないため、誤りです。
オ. 変数adjMatrixの3行1列にしか「1」が入らないため、誤りです。
カ. 変数adjMatrixの3行3列に「1」が入ってしまうため、誤りです。