链接:

https://cn.vjudge.net/problem/1153076/origin

题意:

给出图,求起点到终点的最少花费,但是会提供给一些免费的机票(机票是单程的),你可以之多选择一张机票(当然可以不选),求所有选择中花费最少是多少。

思路:

迪杰斯特拉优化算法,先跑一边不用机票的情况(因为机票可能为0),然后朱哥枚举所有机票的最短路,取最小即可。

代码:

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll INF  = 1e10;
const ll maxn = 150010;
struct qnode
{int v;ll c;qnode(int  _v = 0, ll _c = 0):v(_v),c(_c){}bool operator < (const qnode &r)const{return c > r.c;}
};
struct Edge
{int v;ll cost;Edge(int _v = 0,ll _cost = 0):v(_v),cost(_cost){}
};
vector<Edge> E[maxn];
bool vis[maxn];
ll dist[maxn];
void Dijkstra(int n,int start)
{memset(vis,0,sizeof vis);for(int i = 0 ; i < n; i++)dist[i] = INF;priority_queue<qnode> que;while(!que.empty()) que.pop();dist[start] = 0;que.push(qnode(start,0));qnode tmp;while(!que.empty()){tmp = que.top();que.pop();int u = tmp.v;if(vis[u]) continue;vis[u] = true;for(int  i = 0 ; i < E[u].size();i++){int v = E[u][i].v;ll cost = E[u][i].cost;if(!vis[v]&&dist[v] > dist[u] + cost){dist[v] = dist[u]  + cost;que.push(qnode(v,dist[v]));}}}
}
void addedge(int u ,int v, ll w)
{E[u].push_back(Edge(v,w));
}
int main()
{int n,m,f,s,t;ios::sync_with_stdio(false);cin>>n>>m>>f>>s>>t;for(int i = 0; i < m;i++){int st,ed,c;cin>>st>>ed>>c;addedge(st,ed,c);addedge(ed,st,c);}ll mmin = INF;Dijkstra(n,s);mmin = min(mmin,dist[t]);for(int i = 0 ;i < f; i++){int st,ed;cin>>st>>ed;addedge(st,ed,0);Dijkstra(n,s);mmin = min(mmin , dist[t]);E[st].erase(E[st].end()-1);}cout<<mmin<<endl;return 0;
}

Kattis - bumped B - Bumped! (最短路)相关推荐

  1. Php ui 3dmax,Unity3d和3dMax美工功能简介

    3dsmax2010及以上版本安装插件,输出FBX的类型导入Unity3D中.默认情况下,3dsmax8可以和U3D软件直接融合,自动转换为FBX物体. 1.面数控制 在MAX软件中制作单一Game ...

  2. 【python制作小游戏】大鼻子马里奥等你来挑战,还原度超高哦~

    一.前言 嗨喽,大家好呀!这里是魔王呐~ 在你的童年记忆里,是否有一个蹦跳.顶蘑菇的小人已经被遗忘? 马里奥是靠吃蘑菇成长,闻名世界的超级巨星.特征是大鼻子.头戴帽子.身穿背带工作服.还留着胡子. 帽 ...

  3. [C] [最短路] 只有5行的算法:Floyd-Warshall

    终于学到求最短路了,终于来到我最喜欢的算法--Floyd-Warshall了!今天还有点小激动呢! 我喜欢它,当然是因为它逻辑十分简单咯!真的只有5行诶! Floyd-Warshall算法 题目描述 ...

  4. BZOJ4152 AMPPZ2014 The Captain(最短路)

    事实上每次走到横坐标或纵坐标最接近的点一定可以取得最优方案.于是这样连边跑最短路就可以了. #include<iostream> #include<cstdio> #inclu ...

  5. Codeforces.1051F.The Shortest Statement(最短路Dijkstra)

    题目链接 先随便建一棵树. 如果两个点(u,v)不经过非树边,它们的dis可以直接算. 如果两个点经过非树边呢?即它们一定要经过该边的两个端点,可以直接用这两个点到 u,v 的最短路更新答案. 所以枚 ...

  6. BZOJ1491: [NOI2007]社交网络(Floyd 最短路计数)

    Time Limit: 10 Sec  Memory Limit: 64 MB Submit: 2343  Solved: 1266 [Submit][Status][Discuss] Descrip ...

  7. HDU1811 Rank of Tetris 拓扑排序+并查集 OR 差分约束最短路+并查集

    题目链接 题意:就是给你一堆关系,看能不能排出个确定的顺序 做法: 1. 拓扑排序+并查集 应该很容易想到的一种思路,大于小于建立单向边.对于相等的呢,就把他们缩成一个点.就用并查集缩成一个点就行了 ...

  8. E:By Elevator or Stairs? CF595 DP最短路

    题目链接 比赛的时候一看,这不是最短路吗,然后敲了一个最短路. 然后比赛完发现大家基本都写的dp,我真是个憨憨,dp3行 最短路就建个简单的图,dp就是从上一维转化过来就是了 优秀的dp: //#pr ...

  9. The Shortest Statement CodeForces - 1051F LCA+最短路

    太弱了... 一开始看到题感觉是跑一个最小生成树在上边进行LCA就行了,但是发现过不了样例,然后就是就想到了之前做过类似做法的题目,就是非生成树上的边最多只有21条,然后就那些边记录下来,通过每一条边 ...

  10. JZOJ #4722 跳楼机 (最短路模型的完美转化)

    题目描述: 给出$h,x,y,z$,求在$h$以内,$x,y,z$可以凑出多少个不同的数.$(1\leq{h}\leq{10^{18}},1\leq{x,y,z}\leq{10^5})$ 解题思路: ...

最新文章

  1. 东软java的笔试_东软的笔试题
  2. centos 7 配置nginx
  3. 003 Android之线性布局与基础控件
  4. oracle基础教程实验,Oracle 11g 基础教程与实验指导(配光盘)(清华电脑学堂)
  5. 代码流程图生成器_【进阶Python】第五讲:迭代器与生成器
  6. QTP的那些事--操作excel的函数
  7. 一文看懂5G射频的“黑科技”
  8. (5)vue.js 基础语法—el选项
  9. [Effective Java]第二章 创建和销毁对象
  10. java http get_「面小易-面经12」阿里巴巴Java方向面试题汇总(含答案)
  11. Scrapy 教程(九)-日志系统
  12. android 语音读短信,读短信来电报姓名2021下载-读短信来电报姓名app下载10.50 安卓版-西西软件下载...
  13. Saber2016仿真软件安装详细步骤及hostID全为0的可能原因
  14. 第二人生,Second Life
  15. idgenerator 会重复吗_随机 ID 生成器
  16. js 判断对象数组是否存在某一个对象(全)
  17. 为什么日本是世界上少有的“100V电压国家”,并且就连国内都不能统一供电频率?
  18. Go-使用wmi获取硬盘smart信息并解析
  19. 如何进行shell脚本正确性测试
  20. 关于django模型语法里面的一些坑。系统报错:Unknown command: 'validate' Type 'manage.py help' for usage.

热门文章

  1. 使用CityBuilder搭建智慧城市3D可视化模型
  2. 初学Java---运算符和语句的使用
  3. Android call requires API level 12 的解决方案
  4. 对于程序员而言,是否金三银四才是最佳跳槽季
  5. banner图如何放置
  6. VMware10虚拟机请选择要安装OS X的磁盘解决方法
  7. 设备间子系统的工程技术
  8. 微信又支持改微信号了
  9. 招商银行SWIFT CODE/BIC/BRANCH CODE一览表
  10. python采集原神高清pv图和语音