给一个无向图,有的边是特殊边,最多可以取一条特殊边,求最短路,并且输出路径。

这样考虑,加入所有非特殊边,求出每个点到起点和终点的最短路。
然后加入特殊边的时候,如果取当前这条特殊边,那么答案会是两点预处理路径长度加上该边长。直接保存最小答案即可。

不过注意输出的格式还有一些其他的问题,还有加特殊边的时候要考虑是那一端连接起点终点。。。。

召唤代码君:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <queue>
#define maxn 222000
using namespace std; struct heapnode{
int D,U;
bool operator < (heapnode V) const{
return D>V.D;
}
};
const int inf=~0U>>;
int to[maxn],next[maxn],c[maxn],first[maxn],edge;
int dis1[maxn],dis2[maxn],from1[maxn],from2[maxn];
bool done[maxn];
int n,m,s,t,k,ans,len; void _init()
{
edge=-;
for (int i=; i<=n; i++)
first[i]=-,dis1[i]=inf,dis2[i]=inf,from1[i]=-,from2[i]=-;
} void addedge(int U,int V,int W)
{
edge++;
to[edge]=V,c[edge]=W,next[edge]=first[U],first[U]=edge;
edge++;
to[edge]=U,c[edge]=W,next[edge]=first[V],first[V]=edge;
} void dijkstra(int nd,int dis[],int from[])
{
for (int i=; i<=n; i++) done[i]=false;
priority_queue<heapnode> Q;
Q.push((heapnode){,nd}),dis[nd]=;
while (!Q.empty())
{
heapnode cur=Q.top();
Q.pop();
if (done[cur.U]) continue;
else done[cur.U]=true;
for (int i=first[cur.U]; i!=-; i=next[i])
if (dis[cur.U]+c[i]<dis[to[i]])
dis[to[i]]=dis[cur.U]+c[i],from[to[i]]=cur.U,Q.push((heapnode){dis[to[i]],to[i]});
}
} void _input()
{
int U,V,W;
scanf("%d",&m);
while (m--)
{
scanf("%d%d%d",&U,&V,&W);
addedge(U,V,W);
}
dijkstra(s,dis1,from1);
dijkstra(t,dis2,from2);
} void output(int cur)
{
if (cur==-) return ;
output(from1[cur]);
printf("%d ",cur);
} int main()
{
int U,V,W,UU,VV,T=;
while (scanf("%d%d%d",&n,&s,&t)!=EOF)
{
if (T++) puts("");
_init();
_input();
UU=-,len=dis1[t];
scanf("%d",&m);
while (m--)
{
scanf("%d%d%d",&U,&V,&W);
if (dis1[U]+dis2[V]+W<len)
len=dis1[U]+dis2[V]+W,UU=U,VV=V;
if (dis1[V]+dis2[U]+W<len)
len=dis1[V]+dis2[U]+W,UU=V,VV=U;
}
if (UU==-)
{
output(from1[t]);
printf("%d\nTicket Not Used\n%d\n",t,len);
}
else
{
output(UU);
printf("%d",VV);
for (int k=VV; from2[k]!=-; k=from2[k])
printf(" %d",from2[k]);
printf("\n%d\n%d\n",UU,len);
}
}
return ;
}

UVA11374_Airport Express的更多相关文章

  1. 如何安全的将VMware vCenter Server使用的SQL Server Express数据库平滑升级到完整版

    背景: 由于建设初期使用的vSphere vCenter for Windows版,其中安装自动化过程中会使用SQL Server Express的免费版数据库进行基础环境构建.而此时随着业务量的增加 ...

  2. 【原】无脑操作:express + MySQL 实现CRUD

    基于node.js的web开发框架express简单方便,很多项目中都在使用.这里结合MySQL数据库,实现最简单的CRUD操作. 开发环境: IDE:WebStorm DB:MySQL ------ ...

  3. Express 教程 01 - 入门教程之经典的Hello World

    目录: 前言 一.Express?纳尼?! 二.开始前的准备工作 三.测试安装之经典的Hello World 四.使用express(1)来生成一个应用程序 五.说明 前言: 本篇文章是建立在Node ...

  4. VisualStudio 2015 开启IIS Express可以调试X64项目

    现在项目开发时总有时需要在X64下开发,这样我们就需要IIS Express中调试.不要总是放在IIS中,在Attach这样好慢.   如果不设置直接调试X64的程序,我们有可能会受到以下类似的错误 ...

  5. Node.js Express连接mysql完整的登陆注册系统(windows)

    windows学习环境: node 版本: v0.10.35 express版本:4.10.0 mysql版本:5.6.21-log 第一部分:安装node .Express(win8系统 需要&qu ...

  6. Node.js实现RESTful api,express or koa?

    文章导读: 一.what's RESTful API 二.Express RESTful API 三.KOA RESTful API 四.express还是koa? 五.参考资料 一.what's R ...

  7. express全局安装后无法通过require使用

    今天入门了一下express,首先安装依赖. npm install express -g; npm install body-parser -g; npm install cookie-parser ...

  8. 初步认识Node 之Express

    通过本文,你会对Express有一个较为具体的了解.    起源 2009年6月26日,TJ Holowaychuk提交了Express的第一次commit,接下来在2010年1月2日,有660次co ...

  9. 安装nodejs express框架时express命令行无效

    我也是看了这篇才明白.http://jingyan.baidu.com/article/922554468a3466851648f419.html 最近在看一本书,nodejs开发指南.至于出现这个问 ...

随机推荐

  1. mysql my.init

    CLIENT SECTION 端口默认是3306,可以修改为别的端口 编码格式默认是latin,要修改成utf8 注意是utf8,不是utf-8 SERVER SECTION 端口也是默认3306 编 ...

  2. docker 指令

    杀死所有正在运行的容器docker kill $(docker ps -a -q) 删除所有已经停止的容器docker rm $(docker ps -a -q) 删除所有未打 dangling 标签 ...

  3. C++模板的实现(模板函数和模板类,附带模板实现顺序表和链表代码)

    文章链接:https://blog.csdn.net/qq_38646470/article/details/80209469

  4. 《python 经典实例》 分享 pdf下载

    链接:https://pan.baidu.com/s/1FzSsBfynqx5ll_OpcZGDHg提取码:ykgk

  5. Netty源码分析第4章(pipeline)---->第7节: 前章节内容回顾

    Netty源码分析第四章: pipeline 第七节: 前章节内容回顾 我们在第一章和第三章中, 遗留了很多有关事件传输的相关逻辑, 这里带大家一一回顾 首先看两个问题: 1.在客户端接入的时候, N ...

  6. Flink架构分析之HA

    抽象 LeaderElectionService 这个接口用于从一组竞选者中选出一个leader,其start方法需要传递一个LeaderContender竞选者作为参数,如果有多个竞选者,则每一个竞 ...

  7. 【神经网络】自编码聚类算法--DEC (Deep Embedded Clustering)

    1.算法描述 最近在做AutoEncoder的一些探索,看到2016年的一篇论文,虽然不是最新的,但是思路和方法值得学习.论文原文链接 http://proceedings.mlr.press/v48 ...

  8. exit命令详解

    基础命令学习目录首页 原文链接:https://www.cnblogs.com/itcomputer/p/4157859.html 用途说明 exit命令用于退出当前shell,在shell脚本中可以 ...

  9. 搭建gitpage博客

    http://blog.csdn.net/jzooo/article/details/46781805

  10. JS进阶系列之原型、原型链

    最近在看 JavaScript忍者秘籍 这本书的时候,再加上最近遇到的关于原型.原型链的面试题,所以萌生了要把这些知识梳理一遍的想法,所以以下是我自己对原型.原型链的看法 什么是原型 提到原型,我们可 ...