标签:
1 bool used[maxn]; 2 int g[maxn][maxn]; // 边未联系的填充为INF 3 int d[maxn]; 4 void dijkstra(int s){ 5 memset(g,false,sizeof(g)); 6 memset(d,INF,sizeof(d)); 7 d[s] = 0; 8 while(1){ 9 int v = -1; 10 for(int u = 0; u<v; u++){ 11 if(!used[u] && (v == -1||d[u]<d[v])) v = u; //寻找d最小的点,从此更新。 12 } 13 if(v == -1) break; 14 for(int u = 0; u<v; u++){ 15 d[u] = min(d[u],d[v]+g[v][u]); 16 } 17 } 18 }
时间复杂度仍为o(v^2).
标签:
原文地址:http://www.cnblogs.com/littlepear/p/5449123.html