n表示节点
m表示边数

邻接表

链式前向星存图

用于存储稀疏图,即 n ~ m

  1. int[] h, e, w, ne;
  2. int idx;
  3. h = new int[n + 1];
  4. Arrays.fill(h, -1);
  5. e = new int[m];
  6. w = new int[m];
  7. ne = new int[m];
  8. idx = 0;
  9. //插入一条从a指向b的边,权重为c
  10. void add(int a, int b, int c) {
  11. e[idx] = b;
  12. w[idx] = c;
  13. ne[idx] = h[a];
  14. h[a] = idx++;
  15. }

邻接矩阵

用于存储稠密图,即 n ~ m``2

  1. int[][] g;
  2. g[a][b] = w;