void dijkstra(int u){
memset(used,0,sizeof(used));
memset(dis,INF,sizeof(dis));
int pos=u;
for(i=0;i<n;i++){ //第一次给dis赋值
dis[i]=map[u][i];
}
dis[u]=0;
used[u]=1;
for(i=1;i<n;i++){ //再找n-1个点
int min=INF;
for(j=0;j<n;j++)
if(!used[j]&&dis[j]<min)
min=dis[j];
pos=j;
}
}
used[pos]=1;
dis[pos]=min;
for(j=0;j<n;j++)把dis数组更新,也叫松弛
if(!used[j]&&dis[j]>map[pos][j]+dis[pos]){
dis[j]=map[pos][j]+dis[pos];
}
}
}
}
memset(used,0,sizeof(used));
memset(dis,INF,sizeof(dis));
int pos=u;
for(i=0;i<n;i++){ //第一次给dis赋值
dis[i]=map[u][i];
}
dis[u]=0;
used[u]=1;
for(i=1;i<n;i++){ //再找n-1个点
int min=INF;
for(j=0;j<n;j++)
if(!used[j]&&dis[j]<min)
min=dis[j];
pos=j;
}
}
used[pos]=1;
dis[pos]=min;
for(j=0;j<n;j++)把dis数组更新,也叫松弛
if(!used[j]&&dis[j]>map[pos][j]+dis[pos]){
dis[j]=map[pos][j]+dis[pos];
}
}
}
}