2147483647; for ( int i = 0; i < N ; i++ ){ dist[i] = INF; } memset( visit, 0, sizeof(visit) ); for ( int i = 0; i < N ; i++ ){ for ( int j = 0; j < N ; j++ ){ map[i][j] = INF; } }
) { int v = -1; for ( int i = 0 ; i < N ; i++ ) { if ( !visit[i] && ( v == -1 || dist[i] < dist[v] ) v = i ; // 如果還可以走 } if ( v == -1 ) break; // 走完了 visit[v] = true; // 走過 for ( int i = 0 ; i < N ; i++ ) { dist[i] = min ( dist[i], dist[v] + map[v][i] ); // 原本的比較短 or 新的最短路比較短 } }
) { int v = -1; for ( int i = 0 ; i < N ; i++ ) { if ( visit[i] == false && ( v == -1 || dist[i] < dist[v] ) v = i ; // 如果還可以走 } if ( v == -1 ) break; // 走完了 visit[v] = true; // 走過 for ( int i = 0 ; i < N ; i++ ) { dist[i] = min ( dist[i], dist[v] + map[v][i] ); // 原本的比較短 or 新的最短路比較短 } }