私は C で Prim MST を使用しており、関数は隣接行列を取ります。もちろんの重みを考えるとA[i][j]
。
これまでに見つけた最小エッジを追跡する先行配列があるとします。
predecessor[u]=v
{これも最後の MST です}
ここで、現在の行列を変更し、重みを 1 に変更したいと考えていA[i][j]
ます。これは、先行配列にもエッジ (インデックス) が存在していたときです。それ以外の場合は、ゼロに変更します。
どうすればいいですか?これが私の解決策です:
for (x....)
for (y...)
if (x!=y && (p[x]==y || p[y]==x))
set to 1
else
set to 0