Advertisement
Guest User

Untitled

a guest
May 24th, 2015
194
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.15 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <queue>
  4. #include <algorithm>
  5. using namespace std;
  6.  
  7. typedef vector<vector<int> > graph;
  8.  
  9. vector<int> BFS (graph& g) {
  10. vector<int> ret;//en verdad devolverÄ‚Å el pair.second del que me dÄ‚Å
  11. queue<pair<int,vector<int> > > Q;
  12. pair<int,vector<int> > aux, aux2;
  13. aux.first = 0;
  14. aux.second.push_back(0);
  15. Q.push(aux);
  16. int n = g.size()-1;// -> vertice final
  17. while (not Q.empty()) {
  18. aux = Q.front();
  19. Q.pop();
  20. for (int i = 0; i < g[aux.first].size(); ++i) {
  21. aux2 = aux;
  22. int v = g[aux.first][i];
  23. aux2.second.push_back(v);
  24. if (v == n) return aux2.second;
  25. else {
  26. aux2.first = v;
  27. Q.push(aux2);
  28. }
  29. }
  30. }
  31. return ret;
  32. }
  33.  
  34. int main () {
  35. int n;
  36. while (cin >> n) {
  37. graph g (n);
  38. int m;
  39. cin >> m;
  40. while (m > 0) {
  41. // Llegeixo arestes. Recordem que el graf es dirigit
  42. int u,v;
  43. cin >> u >> v;
  44. g[u].push_back(v);
  45. --m;
  46. }
  47. for (int i = 0; i < g.size(); ++i) {
  48. sort(g[i].begin(),g[i].end());
  49. }
  50. vector<int> cami = BFS(g);
  51. cout << cami[0];
  52. for (int i = 1; i < cami.size(); ++i) cout << " " << cami[i];
  53. cout << endl;
  54. }
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement