1、邻接矩阵
简单,开一个二维数组,pic[ i ] [ j ] = w 表示标号为 i 的顶点到标号为 j 的顶点有一条权值为 w 的有向边;
初始化:顶点自己到自己距离为0,不存在边设为inf;
2、邻接表
邻接表是一种对于每个顶点,用链表来存储以该点为起点的边的数据结构;
由定义知我们不需要再次记录起点,所以一般用一个结构体来记录边的终点和权值信息,初始化直接对每个顶点clear清空就行了;
struct edge {
int to, w;
edge (int too, int ww) { to = too; w = ww; }
//写不写构造函数无所谓辣,随便把值赋上就行辣 };//指向顶点to的权值为w的边
然后利用stl里的vector来实现链表的功能;
vector <edge> G[MAXN]; void addedge (int u, int v, int w) { G[u].push_back (edge (v, w)); //添加从u到v权值为w的边 }
遍历从某点(v)出发的边;
for (int i = 0; i < G[v].size(); i++) { edge e = G[v][i]; //操作…… }