经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » 编程经验 » 查看文章
Dijkstra算法堆优化(vector建图)
来源:cnblogs  作者:uncklesam7  时间:2018/10/9 9:53:08  对本文有异议
  1. #include<iostream>
  2. #include<algorithm>
  3. #include<string.h>
  4. #include<stdio.h>
  5. #include<queue>
  6. #include <vector>
  7. #include <map>
  8. int s,t;
  9. int n,m;
  10. using namespace std;
  11. const int INF=99999999;
  12. struct Node{
  13. int to;
  14. int w;
  15. };
  16. struct Node temp;
  17. vector<Node> v[1002];
  18. typedef pair<int, int> P;
  19. int dis[1002];
  20. void Dijkstra(){
  21. for(int i=1;i<=n;i++)
  22. dis[i]=INF;
  23. priority_queue<P,vector<P>,greater<P> >que;
  24. que.push(P(0,1));
  25. dis[1]=0;
  26. while(!que.empty()){
  27. P p=que.top();que.pop();
  28. if(dis[p.second]<p.first)
  29. continue;
  30. for(int i=0;i<v[p.second].size();i++){
  31. if(dis[v[p.second][i].to]>dis[p.second]+v[p.second][i].w){
  32. dis[v[p.second][i].to]=dis[p.second]+v[p.second][i].w;
  33. que.push(P(dis[v[p.second][i].to],v[p.second][i].to));
  34. }
  35. }
  36. }
  37. }
  38. int main(){
  39. cin>>n>>m;
  40. for(int i=1;i<=n;i++)
  41. v[i].clear();
  42. for(int i=1;i<=m;i++){
  43. cin>>s>>temp.to>>temp.w;
  44. v[s].push_back(temp);
  45. }
  46. Dijkstra();
  47. cout<<dis[6];
  48. return 0;
  49. }

 

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号