JZOJ 5279 香港记者
2017-08-28 20:08
267 查看
![](https://images2017.cnblogs.com/blog/1226867/201708/1226867-20170828195626765-594209632.png)
一句话题意:一个带点权边权的无向图,输出从1号点到n号点的最短路中字典序最小的一条路径
样例输入:
8 9 1 2 3 4 5 6 7 8 1 2 2 2 3 3 3 8 3 1 4 3 4 5 2 5 8 1 1 6 1 6 7 2 7 8 3
样例输出:
6 1 4 5 8
思路:
跑一边spfa(单源最快),更新条件改成(当前路径更短 or (当前路径和原路径相等 and 当前路径字典序更小)),直接开一个pre数组维护当前点的前继就好。
建议自己写队列,实现只要两分钟(因为代码短),而且不会被卡STL(实际上也没什么变态出题人会去卡一个queue),习惯第一。
代码:
#include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #include<algorithm> #include<vector> #define ll long long using namespace std; struct edge{ int next,to,w; edge(){ to=w=0;next=-1; } }a[400100]; int n,m,first[200100],bk[200100]; ll dis[200100];bool vis[200100]; ll pre[200100]; struct Queue{ int q[300100],head,tail; Queue(int k){ head=100000;tail=100001;memset(q,0,sizeof(q)); q[head]=k; } void push(int k){ if(dis[k]>dis[q[head]]) q[tail++]=k; else q[--head]=k; } void pop(){ q[head++]=0; } int top(){ return q[head]; } bool empty(){ return (head==tail); } }; void spfa(){ Queue q(n); vis =1;dis =0;pre =n; int u,v,w,i; while(!q.empty()){ u=q.top();q.pop();vis[u]=0; for(i=first[u];~i;i=a[i].next){ v=a[i].to;w=a[i].w; if(dis[v]>dis[u]+w||(dis[v]==dis[u]+w&&bk[pre[v]]>=bk[u])){ dis[v]=dis[u]+w; pre[v]=u; if(!vis[v]){ vis[v]=1;q.push(v); } } } } } int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=n;i++){ first[i]=-1;dis[i]=0x3f3f3f3f3f3f3f; scanf("%d",&bk[i]); } int t1,t2,t3; for(int i=1;i<=m;i++){ scanf("%d%d%d",&t1,&t2,&t3); a[i].to=t1;a[i].next=first[t2];a[i].w=t3;first[t2]=i; } spfa(); printf("%lld\n%d ",dis[1],bk[1]); int i=1; while(i!=n){ printf("%d ",bk[pre[i]]);i=pre[i]; } }
相关文章推荐
- JZOJ.5279【NOIP2017模拟8.15】香港记者
- JZOJ5279. 【NOIP提高组模拟A组8.15】香港记者
- 【jzoj5279】【NOIP提高组模拟A组8.15】【香港记者】
- [测试题]香港记者
- 香港记者
- 香港记者
- jzoj 1386. 【2012.02.18普及组】郁闷的记者——拓扑排序
- 香港域名总量跌破80万:9月第一周净减992个
- 【jzoj】2018.2.3NOIP普及组——D组模拟赛
- 办理香港学位认证问题
- jzoj3734 【Usaco2014Open银组】双导航
- 深圳香港之行杂记
- jzoj1794 保镖排队 (树形dp)
- 新弄的香港VPS被黑客入侵,特此记录
- JZOJ3847. 【NOIP2014八校联考第1场第2试9.21】都市环游(travel)
- 软件制作:中国大陆和中国香港身份证号码验证和生成
- JZOJ 4161 于神之怒 / BZOJ 4407 于神之怒加强版 莫比乌斯反演 时间复杂度分析
- 能拯救媒体的,不是编辑记者而是“产品经理”
- JZOJ 5561 简单模拟 倍增/置换
- 香港卫生署调查称82%香港市民蔬果进食不足