Advertisement
Guest User

Untitled

a guest
Dec 22nd, 2014
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.71 KB | None | 0 0
  1. #include <iostream>
  2. #include <queue>
  3. #include <vector>
  4. #include <stack>
  5. #define infi 0x7fffffff
  6. using namespace std;
  7.  
  8. typedef pair<int,int> arco;
  9.  
  10. //priority_queue< int, vector<int>, greater<int> > pq1;
  11.  
  12. int min_camino(vector< vector<arco> > G, int x, int y, vector<int> &cami){
  13. vector<bool> b(G.size(),false);
  14. vector<int> p(G.size(),infi);
  15. priority_queue< arco, vector<arco>, greater<arco> > Q;
  16. p[x] = 0;
  17. Q.push( arco(0,x) );
  18. int v;
  19. bool primer = true;
  20. while (not Q.empty()){
  21. primer = true;
  22. int vertex = Q.top().second;
  23. v = vertex;
  24. Q.pop();
  25. if (not b[vertex]){
  26. b[vertex] = true;
  27. int tam = G[vertex].size();
  28. for (int i = 0; i < tam; ++i){
  29. int adyacente = G[vertex][i].second;
  30. int peso = G[vertex][i].first;
  31. if( (p[vertex]+peso) < p[adyacente] ){
  32. p[adyacente] = p[vertex]+peso;
  33. cami[adyacente] = vertex;
  34. Q.push(arco(p[adyacente],adyacente));
  35. }
  36. }
  37. }
  38. }
  39. return p[y];
  40. }
  41.  
  42. int main() {
  43. int n,m,u,v,w,x,y;
  44. while(cin >> n >> m){
  45. vector< vector<arco> > G(n,vector<arco>() );
  46. for(int i=0;i<m;++i){
  47. cin >> u >> v >> w;
  48. G[u].push_back( arco(w,v) ); //PRIMER VALOR: PESO || SEGUNDO VALOR: VERTICE ADYACENTE
  49. }
  50. cin >> x >> y;
  51. vector<int> c(n, -1);
  52. int r = min_camino(G,x,y,c);
  53. if( r!= infi ){
  54. cout << x;
  55. stack<int> path;
  56. int start = y;
  57. while(c[start]!=-1){
  58. path.push(start);
  59. start = c[start];
  60. }
  61. while(not path.empty() ){
  62. cout << ' ' << path.top();
  63. path.pop();
  64. }
  65. }
  66. else cout << "no path from " << x << " to " << y;
  67. cout << endl;
  68. }
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement