📄 ldijkstra.h
字号:
//邻接表存储结构
void DijkstraL(AdjLGraph G, int v0, int distance[], int path[])
{
int n=G.numOfVerts;
int *s=(int *)malloc(sizeof(int)*n);
int minDis, i, j, u;
int d;
for(i=0;i<n;i++)
{
d = GetDistance(G, v0, i);
if(d==-1)distance[i] = MaxWeight;
else distance[i] = d;
s[i] = 0;
if(i!=v0 && distance[i]<MaxWeight) path[i]=v0;
else path[i] = -1;
}
s[v0]=1;
for(i=1;i<n;i++)
{
minDis = MaxWeight;
for(j=0;j<n;j++)
if(s[j]==0 && distance[j] < minDis)
{
u = j;
minDis = distance[j];
}
if(minDis==MaxWeight) return ;
s[u]=1;
for(j=0;j<n;j++)
{
d = GetDistance(G, u, j);
if(d==-1)d=MaxWeight;
if(s[j]==0 && d < MaxWeight && distance[u]+d < distance[j])
{
distance[j] = distance[u] + d;
path[j] = u;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -