Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <queue>
- #include <vector>
- int num_of_vertex;
- int *map;
- bool *visited_vertex;
- int (*table)[2];
- int *previous;
- std::queue<int> q;
- void BFS(int start, int end) {
- q.push(start);
- visited_vertex[0] = true;
- while(!q.empty()) {
- int vertex = q.front();
- q.pop();
- visited_vertex[vertex] = true;
- for(int i = 0; i < num_of_vertex; ++i) {
- if(map[vertex * num_of_vertex + i] > 0 and visited_vertex[i] == false) {
- //std::cout << vertex << " " << i << "\n";
- q.push(i);
- previous[i] = vertex;
- }
- }
- }
- /*
- int i = num_of_vertex - 1;
- while(previous[i]) {
- std::cout << i << " ";
- i = previous[i];
- }*/
- for(int i = 0; i < num_of_vertex; ++i) {
- std::cout << previous[i] << " ";
- }
- }
- int main() {
- int num_of_edge;
- std::cin >> num_of_vertex;
- std::cin >> num_of_edge;
- map = new int[num_of_vertex * num_of_vertex];
- int n = num_of_vertex * num_of_vertex;
- for(int i = 0; i < n; ++i) map[i] = 0;
- visited_vertex = new bool[num_of_vertex];
- for(int i = 0; i < num_of_vertex; ++i)
- visited_vertex[i] = false;
- previous = new int[num_of_vertex];
- for(int i = 0; i < num_of_vertex; ++i)
- previous[i] = -1;
- int source, destination, weight;
- for(int i = 0; i < num_of_edge; ++i) {
- std::cin >> source;
- std::cin >> destination;
- std::cin >> weight;
- map[source + destination * num_of_vertex] = weight;
- map[destination + source * num_of_vertex] = weight;
- }
- BFS(0, num_of_vertex - 1);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement