带队列  dijkstra

 #include <iostream>
#include <cstdio>
#include <queue>
#include <vector>
#include<memory.h>
#include<algorithm>//reverse
using namespace std;
#define maxn 100002
#define INF 65
struct node
{
int u;
int w;
node(long long x,long long y)
{
u = x;
w = y;
}
bool operator < ( const node& p ) const
{ return w > p.w; }
};
vector<long long>g[maxn];
vector<long long>cost[maxn];
long long d[maxn];
long long par[maxn];
int dijk(int n)
{
memset(d, INF, sizeof(d));
memset(par, -, sizeof(par));
priority_queue<node>q;
q.push(node(,));
d[]=;
while(!q.empty())
{
node top = q.top();
q.pop();
int uu = top.u;
if(uu == n) return d[n];
for(int i = ;i < g[uu].size(); i++)
{
int v = g[uu][i];
if(d[uu] + cost[uu][i] < d[v])
{
d[v] = d[uu] + cost[uu][i];
par[v] = uu;
q.push(node(v,d[v]));
}
}
}
return -;
}
int main()
{
//freopen("input.txt","r",stdin);
int n,e,u,v;
long long w;
cin>>n>>e;
for(int i = ; i < e; i++)
{
cin>>u>>v>>w;
g[u].push_back(v);cost[u].push_back(w);
g[v].push_back(u);cost[v].push_back(w); }
w = dijk(n);
if(w == -) cout<<"-1"<<endl;
else
{
int t = n;
int s[maxn];
int k = ;
while(t != -)
{
s[k++] = t;
t = par[t];
}
for(int j = k - ; j >= ; j--)
cout<<s[j]<<" ";
cout<<endl;
}
}

最新文章

  1. Git 常用命令详解
  2. zk系列-zookeeper的使用
  3. OmniPlan文档链接
  4. 关于hive的存储格式
  5. CSS之上边栏
  6. 推荐2个小工具 .NET reflector resharper
  7. Selenium WebDriver java 简单实例
  8. Cstyle的UEFI导读:第20.0篇 IGD OpRegion interface &amp;amp;&amp;amp; IGD OpRegion PROTOCOL
  9. org.w3c.dom.Element 缺少 setTextContent 步骤
  10. python进阶------进程线程(三)
  11. Kali Linux安装VMWare Tools
  12. Git来操作GitHub~
  13. Web Api使用Swagger提供在线文档
  14. 活代码LINQ——01
  15. 常用css字体英文写法
  16. Spark记录-SparkSQL一些操作
  17. python3.4读取excel数据绘图
  18. Navicat 同步数据库中数据
  19. c++中用vector创建多维数组的初始化方法
  20. MySQL 找回密码

热门文章

  1. python下彻底解决浏览器多标签打开与切换问题
  2. leetcode240
  3. ElasicSearch(4) 与jest结合
  4. Java中的包装数据类型
  5. window.location.href 页面不跳转解决
  6. Android 查阅博客1_app优化_1大小
  7. linux 大容量磁盘分区工具parted
  8. C程序的编译与链接
  9. TypeError: while_loop() got an unexpected keyword argument &#39;maximum_iterations&#39;
  10. HDU 5828 Rikka with Sequence(线段树区间加开根求和)