Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- int main() {
- int n;
- std::cin >> n;
- int *adjMatrix = new int [n * n];
- for(int i = 0; i < n * n; ++i)
- std::cin >> adjMatrix[i];
- int (*visited)[2] = new int[n][2];
- for(int i = 0; i < n; ++i)
- for(int j = 0; j < 2; ++j)
- visited[i][j] = -1;
- visited[0][0] = 0;
- for(int i = 0; i < n; ++i) {
- for(int j = i + 1; j < n; ++j) {
- if(adjMatrix[i * n + j] > 0) {
- if(visited[j][0] == -1 or visited[j][0] > visited[i][0]+ adjMatrix[i * n + j]) {
- visited[j][0] = visited[i][0] + adjMatrix[i * n + j];
- visited[j][1] = i;
- }
- }
- }
- }
- std::vector<int> path;
- path.push_back(n - 1);
- for(int i = n - 1; i;) {
- path.push_back(visited[i][1]);
- i = visited[i][1];
- }
- std::cout << "\n" << "Path: ";
- int len = path.size();
- for(int i = len - 1; i >= 0; --i) {
- if(i != len - 1 or i == 0)
- std::cout << " - ";
- std::cout << path[i];
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement