最短路模板,以9个路口为例。
#define MAXN 1000000000
int a[9][9], d[9], p[9];
void spath(int v0)
{
int v, w, k, min;
int vis[9];
for(v=0; v<9; v++)
{
vis[v] = 0;
d[v]=a[v0][v];
p[v]=0;
}
d[v0]=0;
vis[v0]=1;
for(v=1; v<9; v++)
{
min = MAXN;
for(w=0; w<9; w++)
{
if(!vis[w]&&d[w]<min)
{
k=w;
min=d[w];
}
}
vis[k]=1;
for(w=0; w<9; w++)
{
if(!vis[w]&&(min+a[k][w]<d[w]))
{
d[w]=min+a[k][w];
p[w]=k;
}
}
}
}