Задача расчета расстояния путей между городами с использование графов в C++?
списками хранить надоvector<vector<int>> - для единичных реберvector<vector<pair<int,int>>> - для не единичных ребер
заполнение данными:for(int i =0; i < n; i++){
   for(int j=0; j < m; j++){
      v[i].push_back(make_pair(j,weight));
   }
}
где  i - текущая вершина, n - Кол-во вершин, j - текущее ребро i-ой вершины,  m - кол-во ребер i-ой вершины, weight - длина\вес ребра
соответственно в будующем можем получить все исходящие ребра из i вершиныv[i][j].first - куда, v[i][j].second - за сколько
Матрица смежности чаще всего используется. Еще можно матрицу инцидентности, но смысла обычно нет. Если матрица получается разреженной (много нулевых элементов), может иметь смысл воспользоваться какой-нибудь схемой упаковки. Но это, если матрица большая и имеет смысл думать о памяти.