图片加载可能有点慢,请跳过题面先看题解,谢谢


\(UVA\)这个\(pdf\)做得真的蠢。。。那张图片把字都盖没了。。。
$
$
又是一道图论水题,快联赛了我还是只会切水题,果然还是太菜了
(话说今天忌装弱。。。)

$
$
不过说实话这道题是真的水,做法也很简单
跑两遍单源最短路,分别求出从起点和从终点出发到每个点最短路
然后直接枚举商业车,对于一条商业车道 \(i\) ,用\(dis1[x]+w[i]+dis2[v]\)或\(dis2[x]+w[i]+dis1[v]\)来更新答案即可
然后就是扣点,对于最短路上的点,一定满足前一个点\(x\)的\(dis\)加上边权等于后一个点\(v\)的\(dis\),就这样\(dfs\)或者\(bfs\)求就行
$
$

//made by Hero_of_Someone
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<queue>
#define N (540)
#define M (2010)
using namespace std;
void File(){freopen(".in","r",stdin);freopen(".out","w",stdout);}int t,n,S,E,m,K;
int Q[N],k1,k2,sh,cnt;
struct Edge{int u,v,w;}e[M];
int num,head[N],nxt[M],to[M],w[M];
void add(int u,int v,int d){nxt[++num]=head[u];to[num]=v;w[num]=d;head[u]=num;nxt[++num]=head[v];to[num]=u;w[num]=d;head[v]=num;
}void init(){ if(t) puts("");t++;num=k1=k2=cnt=0;memset(head,0,sizeof(head));scanf("%d",&m);for(int i=1;i<=m;i++){int u,v,d;scanf("%d%d%d",&u,&v,&d);add(u,v,d);}scanf("%d",&K);for(int i=1;i<=K;i++)scanf("%d%d%d",&e[i].u,&e[i].v,&e[i].w);
}bool vis[N];
int dis1[N],dis2[N];
struct node{int x,dis;bool operator<(const node& a)const{ return dis>a.dis; }
};
priority_queue<node>que;void Dij(int s,int* dis){memset(vis,0,sizeof(vis));que.push((node){s,0}); dis[s]=0;while(!que.empty()){node Q=que.top(); que.pop();int x=Q.x,d=Q.dis;if(vis[x]) continue;for(int i=head[x];i;i=nxt[i]){int v=to[i];if(dis[v]>dis[x]+w[i]){dis[v]=dis[x]+w[i];que.push((node){v,dis[v]});}}vis[x]=1;}
}void dfs(int x,int* dis){Q[++cnt]=x; if(!dis[x]) return ;for(int i=head[x];i;i=nxt[i]){int v=to[i];if(dis[x]==dis[v]+w[i])dfs(v,dis);}
}void work(){memset(dis1,127/3,sizeof(dis1));memset(dis2,127/3,sizeof(dis2));Dij(S,dis1); Dij(E,dis2); sh=dis1[E];for(int i=1;i<=K;i++){int u=e[i].u,v=e[i].v,d=e[i].w;int d1=dis1[u]+d+dis2[v];int d2=dis2[u]+d+dis1[v];if(d1<sh) sh=d1,k1=u,k2=v;if(d2<sh) sh=d2,k1=v,k2=u;}if(k1){ dfs(k1,dis1),K=cnt,dfs(k2,dis2);for(int i=K;i;i--) printf("%d ",Q[i]);for(int i=K+1;i<cnt;i++) printf("%d ",Q[i]);printf("%d\n",Q[cnt]);printf("%d\n",k1);}else{ dfs(S,dis2);for(int i=1;i<cnt;i++) printf("%d ",Q[i]);printf("%d\n",Q[cnt]);puts("Ticket Not Used");}printf("%d\n",sh);
}int main(){ while(scanf("%d%d%d",&n,&S,&E)!=EOF){ init(); work(); } return 0; }

转载于:https://www.cnblogs.com/Hero-of-someone/p/7750520.html

[UVA 11374] Airport Express相关推荐

  1. UVa 11374 - Airport Express

    https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  2. Uva 11374 - Airport Express(枚举+最短路)

    题目链接 https://vjudge.net/problem/UVA-11374 [题意] 市民从市区去机场要走机场快线,机场快线分为经济线和商业线两种,你只有一张商业线车票,只能坐一站商业线,其它 ...

  3. 计算机网络ap图片,苹果AirPort Express无线AP开箱图赏

    一直以来,APPLE都是以其优越的性能.大气简约的工业设计而身为业界翘楚,其截然不同的计理念造就了苹果这个优秀的品牌.苹果早在1999年推出了第一款无线基站AirPort,引来不少业界人士的关注,而2 ...

  4. 【日常】记一次烦人的Apple Airport Express Base Station配置

    被学校停课了 思想品行分数不高 于是第一节:政治 第二节:政治... 第八节:政治 找别人借了手机 但是没有无线 只能心疼地(才不会x 用别人的流量 想起说还有个Airport Express 但是上 ...

  5. UVA 11168 - Airport 凸包

    点击打开链接 Problem D Airport Input: Standard Input Output: Standard Output It is no coincidence  that in ...

  6. UVa 11168 Airport , 凸包

    题意: 给出平面上n个点,找一条直线,使得全部点在直线的同側.且到直线的距离之平均值尽量小. 先求凸包 易知最优直线一定是凸包的某条边,然后利用点到直线距离公式进行计算. #include<cs ...

  7. UVa 11374 机场快线

    https://vjudge.net/problem/UVA-11374 题意: 机场快线分为经济线和商业线两种,线路.速度和价格都不同.你有一张商业线车票,可以坐一站商业线,而其他时候只能乘坐经济线 ...

  8. uva 11374(Dijkstra) HappyNewYear!!!

    2013年最后一题,也是最后一篇随笔~祝大家新年快乐! 题意:在一张无向图中, 有两种公交线路,快线和慢线.现在有一个人想要从s->e但是他只有一张快线车票.所以快线只能乘坐一次,慢线可以随便乘 ...

  9. 简单几何(数学公式+凸包) UVA 11168 Airport

    题目传送门 题意:找一条直线,使得其余的点都在直线的同一侧,而且使得到直线的平均距离最短. 分析:训练指南P274,先求凸包,如果每条边都算一边的话,是O (n ^ 2),然而根据公式知直线一般式为A ...

  10. 苹果软件更新在哪里_苹果再次为已停产的AirPort发布软件更新

    点击上方蓝色字体,关注我们    「也就苹果仍在为退役老干部推出更新了」 苹果今天发布了 AirPort Utility(AirPort 实用工具)的罕见更新,包括安全性改进和常规稳定性增强.目前苹果 ...

最新文章

  1. 查看node状态_第六章 无限可能,神器降临——Node-RED
  2. C#进阶之路(一):委托
  3. 远程桌面连接时显示密码已过期
  4. 错误 Every derived table must have its own alias
  5. 降维后输入分类器分类时报错_逻辑回归解决多分类方法及其优缺点分析
  6. 搭建云计算机win10,win10电脑做云服务器
  7. Oracle学习总结(9)—— Oracle 常用的基本操作
  8. 操作元素之表单属性设置
  9. 【openwrt】使用4G模块 移远EC20/25(1)内核配置
  10. RHEL5下nginx+php+mysql+tomcat+memchached配置全过程
  11. 2020IT从业者如何找到高薪工作
  12. SQLServer之创建唯一非聚集索引
  13. 【Verilog】加法器减法器的设计
  14. 皇太极有多宠爱宸妃海兰珠,从这三件事可以看出
  15. 常见的前端考试面试题目【vue,react,css,six】
  16. 未来的智能制造,或许会往这些方向推进
  17. 音频频谱 via FFT
  18. 技术概况python_《技》字意思读音、组词解释及笔画数 - 新华字典 - 911查询
  19. Vue组件里初始化组件,一对多
  20. elastic-job之运维平台

热门文章

  1. 项目心得--我的尺寸测量项目
  2. 常用的C语言函数介绍
  3. Python爬取豆瓣电影
  4. 数据结构:最小生成树
  5. ENVI学习总结(十一)——NDVI的计算
  6. Ubuntu配置NFS服务器与客户端
  7. 计算机操作员(高级)理论知识考试卷,计算机操作员高级试题
  8. linux获取cpu数量函数,Linux上获取CPU Core个数的实现
  9. 利用Docker学习Redis笔记(一)
  10. 编写代码模拟三次密码输入的场景。