void Dijkstra(int n,int v,Type dist[],int prev[],Type **c){
//顶点数,起始点,最短路径数组,连着的前一个点的数组,邻接矩阵
bool s[n+1];//s标记有无进入最短路径
for(int i=1;i<=n;i++){//初始化,得到起点v到其他各点的距离
dist[i]=c[v][i];
s[i]=false;
if(dist[i]=maxint)
prev[i]=0;
else
prev[i]=v;
}
dist[v]=0;s[v]=true;
for(int i=1;i<=n;i++){
int temp=maxint;
int u=v;
for(int j=1;j<=n;j++)
if((!s[j])&&dist[j]<temp){//找dist的最小值
u=j;
temp=dist[j];
}
s[u]=true;
for(int j=1;j<=n;j++){
if((!s[j])&&c[u][j]<maxint){
Type newdist=dist[u]+c[u][j];
if(newdist<dist[j]){
dist[j]=newdist;//升级dist,prev数组
prev[j]=u;
}
}
}
}
}