ダイクストラ法について
Posted: 2017年7月08日(土) 11:13
下に示されるC言語の関数dijkstra(int s, int g)は、頂点sから頂点gまで到達可能な場合にはその2頂点間の最短距離を、到達不可能な場合には-1を返す関数です。ただし、ここで有効グラフにおける2頂点sおよびg間の最短距離を、頂点sから頂点gへ到達するまでにたどる矢印の最小数とする(重みが1ということ)
という問題で、
下記のコードの/A/部分がわかりません。//A//の文の数は分かりません。
node.distanceの値を更新するのかと思ったのですが、方法が思いつかないです。
という問題で、
下記のコードの/A/部分がわかりません。//A//の文の数は分かりません。
node.distanceの値を更新するのかと思ったのですが、方法が思いつかないです。
int dijkstra(int s, int g){
struct {
int found;
int distance;
}NODE[N];
int i,j,min;
for(i=0;i<N;i++){
node[i].found=0;
node[i].distance=N;
}
node[s].distance=0;
for(j=1;j<N;j++){
node[s].found=1;
if(s==g)
return node[s].distance;
for(i=0;i<N;i++){
//A//
}
min=N;
for(i=0;i<N;i++){
if(!node[i].found)
if(node[i].distance<min){
min=node[i].distance;
s=i;
}
}
}
return -1;
}