Hmm...4

先行点の管理の仕方がおかしいんだ。

次に使用する先行点は、以下の論理で求まるはず。

  1. まだ訪れていない点の集合のうち、既に木に加わっている点と隣接している辺を見つけ出す。そして、その中から重みが最小の辺を見つける。言い換えると、交差する辺のうち、重み最小の辺を見つける。
  2. その辺のうち、木に加わっていない方の点を先行点として次の緩和に使用する。

これを細分化して、自分のプログラム上でどう表現されているか確認すると

  1. 訪れていない点の集合=先行点を納める配列中で、内容がNILの点
  2. 既に木に加わっている点の集合=先行点を納める配列中で、内容がNILではない点
  3. 交差する辺=既に木に加わっている点の集合からまだ訪れていない点への集合のパスを持っている点。<-これができてないぽいので、修正したら、サンプルインプットは通った。