Data Structures, Algorithms, & Applications in C++
Chapter 16, Exercise 21

Let a[n][n + 1] be the two-dimensional array used to store the adjacency matrix A of an n vertex graph. The diagonal entries of A are not stored in a. However, all diagonal elements of A are required to be zero. Elements A(i,j) with i < j are in the upper triangle of A and are stored in a[i-1][j-1]. Elements A(i,j) with i > j are in the lower triangle of A and are stored in a[i-2][j-1].