追記:dijkstra | spin on the RITZ

追記:dijkstra

ご指摘があったんですが、58行目の

min_dist[k] = min(min_dist[k], min_dist[min_idx]+dmat[min_idx][k]);



で関数でないものが呼び出されるというものなんですが、正直僕もなんでこんな風に書いたのかがわかりません(コラ)


ダイクストラ法で最短距離を求めているときの計算なので、


今までと同じ通り方

新しく追加したノードから行く通り方


のどちらがコストが小さいですか?という感じの内容なので、適当にマクロかなんか使って2つの整数の小さいほうを返すようなものをつくれば良いと思います。



#define min(x,y) ((x>y)?x:y)

みたいなやつね
あ、ちなみにcygwinについてきたgccというコンパイラを使っているので、C++のエラーは出ないときがあります

(C++用のコンパイラg++でもやってみたんですが、上手くいってしまいました)



最小値とか最大値とかを求めるのは標準の関数ではないはずなので、かなりまずいプログラムでしたorz



ご指摘ありがとうございました


また何かあったら言ってくださるとありがたいですm(_ _)m



さらに追記(すいませんorz)


どうやら、min・maxマクロはwindows.hの中で宣言されているようです(www2.ocn.ne.jp/~cbmaho/homepage/vc/Help/WINDOWSH.htm)

でも宣言されているならエラーは出ないはずなんだけどなぁ~・・・・・・



とりあえず!明日VisualStudioを使う予定があるので、学校で試してみたいと思います。