Кажется, вы это знаете, но я делаю обзор для всех:
Существует два типичных способа реализации графа: матрица ребер и разреженная матрица (представленная в виде вектора ребер для каждой вершины).
Матрица - это структура NxN, где N - количество вершин. Каждый элемент данных - это длина ребра между двумя вершинами, поэтому G [1] [2] - это расстояние от 1 до 2. Это также учитывает ориентированные графы.
Другой метод, более подходящий для разреженных графов, - это иметь вектор ребер для каждой вершины. Таким образом, у вас будет вектор> g, где g [1] - вектор ребер вершины 1. Каждый элемент в этом векторе будет иметь ребро, содержащее вершину и расстояние.
Для получения более подробной информации перейдите сюда: http://en.wikipedia.org/wiki/Graph_(data_structure)#Representations
Учитывая все это, одна из этих реализаций, вероятно, будет весьма полезна для вас.
EDIT1
Для хранения весов в графе on может использоваться такая структура, как vector> (как отмечено выше). В таком случае класс ребер может быть таким:
class edge {
int weight;
int destination_vertex;
};
Таким образом, ребро от 1 до 2 будет g [1] [2].