192 std::vector<Node<V>*> thing;
197 std::vector<bool> visited;
198 visited.resize(nodes.size());
199 double distances[nodes.size()];
201 for(
int filler = 0; filler < nodes.size(); filler++) {
203 distances[filler] = UINT_MAX;
207 std::priority_queue<pair, std::vector<pair>,
CustomCompare> queue;
208 std::vector<Node<V>*> temp;
209 temp.push_back(from);
210 queue.push(std::pair<
double, std::vector<
Node<V>*>>(0, temp));
211 uint64_t iterations = 0;
213 while (!queue.empty()) {
216 std::vector<Node<V>*> path = queue.top().second;
217 Node<V> *curr = path[path.size() - 1];
218 double currentDistance = queue.top().first;
221 visited[nodeMap.at(curr)] = 1;
225 std::cout << iterations << std::endl;
229 std::vector<Node<V>*> adj = getAdj(curr);
231 for (
int looper = 0; looper < adj.size(); looper++) {
232 std::vector<Node<V>*> possiblePath;
233 for (
int i = 0; i < path.size(); i++) {
234 possiblePath.push_back(path[i]);
237 if (!visited[nodeMap.at(adj[looper])] && currentDistance + matrix[nodeMap.at(curr)][nodeMap.at(adj[looper])] < distances[nodeMap.at(adj[looper])]) {
238 distances[nodeMap.at(adj[looper])] = currentDistance + matrix[nodeMap.at(curr)][nodeMap.at(adj[looper])];
239 possiblePath.push_back(adj[looper]);
240 queue.push(std::pair<
double, std::vector<
Node<V>*>>(currentDistance + matrix[nodeMap.at(curr)][nodeMap.at(adj[looper])], possiblePath));
249 std::cout << iterations << std::endl;