题意翻译
题目大意
给出一张图,请输出其中任意一条可行的从点
11
1 到点
nn
n 的最短路径。
输入输出格式
输入格式
第一行:两个整数n,m,分别表示点数和边数
接下来m行:每行三个整数u,v,w,表示u和v之间连一条边权为w的双向边。
输出格式
一行:一个可行的路径,如果不存在这种路径输出-1
2<=n<=105,0<=m<=1052<=n<=10^5,0<=m<=10^52<=n<=105,0<=m<=105

5 6
1 2 2
2 5 5
2 3 4
1 4 1
4 3 3
3 5 1
1 4 3 5

注意这里输出路径要到着输出

不知道为什么链式前向星中 head用-1就WA,以后都不用-1了,遇见从0开始的就++

#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<queue>
#define ls (p<<1)
#define rs (p<<1|1)
#define mid (l+r)/2
#define over(i,s,t) for(int i=s;i<=t;++i)
#define lver(i,t,s) for(int i=t;i>=s;--i)
using namespace std;
typedef long long ll;
const ll N=1e5+7;
const ll INF=1e13+7;
const ll mod=2147483647;
const double EPS=1e-6;
struct node
{ll nex,v,val;
}edge[N<<2];
ll n,m;
ll head[N],cnt,tot;
bool flag,vis[N];
ll dis[N],pre[N],pa[N];
priority_queue< pair<ll,ll> >q;
inline void add(ll x,ll y,ll v)
{edge[++cnt].nex=head[x];edge[cnt].v=y;edge[cnt].val=v;head[x]=cnt;
}
void dijkstra()
{over(i,1,n)dis[i]=INF;memset(vis,false,sizeof vis);q.push(make_pair(0,1));dis[1]=0;while(!q.empty()){ll u=q.top().second;q.pop();if(vis[u])continue;vis[u]=true;for(int i=head[u];i;i=edge[i].nex){ll v=edge[i].v;if(dis[u]+edge[i].val<dis[v]){dis[v]=dis[u]+edge[i].val;q.push(make_pair(-dis[v],v));pre[v]=u;}}}
}
inline void print()
{for(int i=n;i;i=pre[i]){pa[++tot]=i;if(i==1)flag=true;}if(flag){lver(i,tot,1)printf("%lld ",pa[i]);}else printf("-1");return;
}
int main()
{scanf("%lld%lld",&n,&m);over(i,1,m){ll x,y,z;scanf("%lld%lld%lld",&x,&y,&z);add(x,y,z);add(y,x,z);}dijkstra();print();return 0;
}

有任何疑问欢迎评论哦虽然我真的很菜
点个关注再走吧

CF20C Dijkstra?( Dijkstra!练手)难度⭐⭐⭐相关推荐

  1. python练手经典100例-Python 的练手项目有哪些值得推荐?

    首先两点建议:最好不要写太应用的程序练手,如果你发现你写程序的大部分时间都在查库手册(或者类似的事情),那就是大家所说的"搬砖"了:要思考什么更像是知识,什么只是经验,还是那句老话 ...

  2. python项目实例初学者-适合初学者练手的 10 个 有趣Python项目

    Python Python开发 Python语言 适合初学者练手的 10 个 有趣Python项目 想成为一个优秀的开发者,没有捷径可走,势必要花费大量时间在键盘后. 而不断地进行各种小项目开发,可以 ...

  3. python有趣的小项目-10 个最值得 Python 新人练手的有趣项目

    原标题:10 个最值得 Python 新人练手的有趣项目 作者 | Claire D. Costa 编译 | Wendy 有很多 Python 新手留言问:"Python 入门很久了,但项目 ...

  4. python项目-推荐 10 个有趣的 Python 练手项目

    想成为一个优秀的Python程序员,没有捷径可走,势必要花费大量时间在键盘后. 而不断地进行各种小项目开发,可以为之后的大开发项目积攒经验,做好准备. 但不少人都在为开发什么项目而苦恼. 因此,我为大 ...

  5. 10个相见恨晚的 Java 在线练手项目

    前一篇:?[清单]37个超棒的 Web 数据可视化工具 Java 开发简单的计算器 难度为一般,适合具有 Java 基础和 Swing 组件编程知识的用户学习 推荐指数:????? 在线实操链接 制作 ...

  6. [推荐]ORACLE SQL:经典查询练手第三篇(不懂装懂,永世饭桶!)

    [推荐]ORACLE SQL:经典查询练手第三篇(不懂装懂,永世饭桶!) [推荐]ORACLE SQL: 经典查询练手第三篇(不懂装懂,永世饭桶!) --通过知识共享树立个人品牌. 本文与大家共同讨论 ...

  7. python练手经典100例-10 个最值得 Python 新人练手的有趣项目

    原标题:10 个最值得 Python 新人练手的有趣项目 作者 | Claire D. Costa 编译 | Wendy 有很多 Python 新手留言问:"Python 入门很久了,但项目 ...

  8. c# 火狐浏览器怎么嵌入窗体中_「C#上位机必看」你们想要的练手项目来了

    最近有越来越多做电气的小伙伴开始学习C#来做上位机开发,很多人在学习一段时间后,都有这种感觉,似乎学到了很多知识,但是不知道怎么应用,因此我找了一个真实的上位机小项目,让大家来练练手.这篇文章主要对这 ...

  9. python游戏制作软件_10 个最值得 Python 新人练手的有趣项目

    原标题:10 个最值得 Python 新人练手的有趣项目 作者 | Claire D. Costa 编译 | Wendy 有很多 Python 新手留言问:"Python 入门很久了,但项目 ...

最新文章

  1. ICCV 2013的人脸特征点检评测及代码
  2. android左侧固定导航栏,Android使用fragment实现左侧导航
  3. ant 合并 jar
  4. Hadoop作业提交分析(三)
  5. ubuntu自带截图工具--方便好用
  6. 【Elasticsearch】使用 Elasticsearch Painless 脚本以递归方式遍历 JSON 字段
  7. Physical Standby Database Failover
  8. 随机化算法 —— 数组置乱器的实现
  9. c语言RePutDate用法,C语言 栈的使用
  10. STM32硬件编程_学习思路
  11. WPS:添加公式后,行间距变宽的解决方法
  12. 无油螺杆鼓风机-市场现状及未来发展趋势
  13. V2X(二)GNSSPC5UU
  14. 手写java_JAVA实现简单手写识别
  15. 05- 防火墙用户管理
  16. 5G大规模天线基站下的多用户性能测试技术
  17. 用墨刀进行简单的后台页面设计
  18. fabric sdk java_Hyperledger Fabric Java SDK最新教程
  19. 是否能构成三角形java
  20. R语言aggregate函数

热门文章

  1. 【从零学习OpenCV 4】Image Watch插件的使用
  2. 新一代企业内部故障报修软件功能实现
  3. Python轻松爬取Rosimm写真网站全部图片
  4. hadoop集群运维碰到的问题汇总
  5. 1. vi 与 vim 有什么区别呢,它们之间有什么关系?
  6. js中对arry数组的各种操作小结
  7. limit_choices_to a value on a field in the same model - Google Groups
  8. web开发流程 - 网上商城示例
  9. Teched 2010
  10. mongodb导入hive