Я хочу преобразовать список смежности в матрицу смежности
Список смежности выглядит следующим образом:
vector< vector< Arc * > * > _adjacences;
и класс ar c имеет это:
public:
int sommetArrive; // tops
int longueur; // distance
У меня есть 3 вектора, которые нужно заполнить:
std::vector <int> list[_adjacences.size()]; // vector of tops
std::vector <int> >listD[_adjacences.size()]; // vector of distances
std::vector < vector <int> > matrix( _adjacences.size(),
vector<int>(_adjacences.size(),0 )); // matrix init to 0 and to be filled to become adjacenecy matrix
Я заполнил векторы следующим образом:
for (unsigned i = 0; i < _adjacences.size(); i++){
for (auto j : *_adjacences[i]){
list[i].push_back(j->sommetArrive);
listD[i].push_back(j->longueur);
}
}
Теперь моя проблема здесь: я пытаюсь сделать смежность матрица, я смог сделать это
0 0 0 0 1 0 1
0 1 0 1 0 1 0
....
, сделав это:
for (unsigned i = 0; i < _adjacences.size(); i++) {
for (auto j : list[i]){
matrix[i][j] = 1;
}
}
Я хочу сделать матрицу смежности с расстояниями между вершинами вместо 1.
Я пробовал сделать это так:
for (unsigned i = 0; i < _adjacences.size(); i++) {
for (auto j : list[i]){
for (auto k : listD[i]){ // MY ERROR IS SOMEWHERE HERE
matrix[i][j] = k; // IN THIS LOOP
}
}
}
Я получаю такое же расстояние в той же строке
0 0 0 0 35 0 35
0 22 0 22 0 22 0
Как я могу исправить мой l oop?