#include <stdio.h>
#include <stdlib.h>
#define WHITE 0
#define GRAY 1
#define BLACK 2
int TopoCount=0;
int f=0;
//图节点
typedef struct VertexNode
{
char name;
int key;
VertexNode *p;
int f;
int color;
}Vertex,*pVertex;
//图
typedef struct
{
int vn;
int **E;
pVertex *V;
int *Topo;
}Graph,*pGraph;
//根据算法导论 图24-5 初始化图
pGraph initGraph()
{
pGraph g=(pGraph)malloc(sizeof(Graph));
g->vn=6;
g->Topo=(int*)malloc(g->vn*sizeof(int));
pVertex vs=(pVertex)malloc(sizeof(Vertex));
vs->name='s';
vs->key=0;
vs->p=NULL;
pVertex vt=(pVertex)malloc(sizeof(Vertex));
vt->name='t';
vt->key=INT_MAX;
vt->p=NULL;
pVertex vy=(pVertex)malloc(sizeof(Vertex));
vy->name='y';
vy->key=INT_MAX;
vy->p=NULL;
pVertex vx=(pVertex)malloc(sizeof(Vertex));
vx->name='x';
vx->key=INT_MAX;
vx->p=
算法导论 单源最短路径 DAG-SHORTEST-PATHS
这段代码展示了如何根据算法导论中的描述,初始化有向无环图(DAG)并实现拓扑排序及单源最短路径计算。通过DFS进行拓扑排序,并使用Bellman-Ford松弛操作更新节点的关键路径。
摘要由CSDN通过智能技术生成