图的存储方式有邻接矩阵和邻接链表。
邻接矩阵就是开一个二维数组来表示图上两个点之间的连边情况,比较简单,也有弊端,当图比较稀疏时,也就是边数相对少时,会造成大量的空间浪费。
邻接链表也并不复杂,但具体实现方式有很多,下面的代码只是其中一种,还可以使用二维vector,来保存与点相连的边。
1 int head[maxn], eid; 2 3 struct Edge { 4 int v, w, next; 5 } edge[maxm]; 6 7 inline void insert(int u, int v, int w) { 8 edge[++eid].v = v; 9 edge[eid].w = w; 10 edge[eid].next = head[u]; 11 head[u] = eid; 12 }