const int maxv=1000;
const int inf=1000000000;
1、邻接矩阵版Dijkstra
const int maxv=1000;
const int inf=1000000000;
//1、邻接矩阵版Dijkstra
int G[maxv][maxv];
int n;
int d[maxv]; //起点到各点的最短路径长度
bool vis[maxv]={false};
void Dijkstra(int n)
{
fill(d,d+maxv,inf);
d[s]=0;
for(int i=0;i<n;i++) //n次,每次选出一个
{
int u=-1;
int min=inf;
for(int j=0;j<n;j++)
{
if(vis[j]==false&&d[j]<min)
{
u=j;
min=d[j];
}
}
if(u==-1) return;
vis[u]=true; //选出来,然后,别忘记置为true
for(int v=0;v<n;v++) //遍历其他点,看看能不能松弛
{
if(vis[v]==false&&G[u][v]!=inf&&d[u]+G[u][v]<d[v])
{
d[v]=d[u]+d[u][v];
}
}
}
}
2、邻接表版Dijkstra