【USACO06NOV】路障
【题目链接】
【算法】
最短路
【代码】
#include<bits/stdc++.h>
using namespace std;
#define MAXN 5000
#define MAXM 100000 int i,N,M,shortest,ans;
int dista[MAXN+],distb[MAXN+],x[MAXM+],y[MAXM+],d[MAXM+],
visa[MAXN+],visb[MAXN+];
vector<pair<int,int> > E[MAXN+]; template <typename T> void read(T &x) {
int f=; char c = getchar(); x=;
for (; !isdigit(c); c = getchar()) { if (c=='-') f=-; }
for (; isdigit(c); c = getchar()) x=x*+c-'';
x*=f;
} inline void dijkstra1() {
int i,x,to;
priority_queue<pair<int,int> > q;
for (i = ; i <= N; i++) dista[i] = 2e9;
q.push(make_pair(-,));
while (!q.empty()) {
x = q.top().second; q.pop();
if (visa[x]) continue;
visa[x] = ;
for (i = ; i < E[x].size(); i++) {
to = E[x][i].first;
if (dista[x] + E[x][i].second < dista[to]) {
dista[to] = dista[x] + E[x][i].second;
q.push(make_pair(-dista[to],to));
}
}
}
} inline void dijkstra2() {
int i,x,to;
priority_queue<pair<int,int> > q;
for (i = ; i < N; i++) distb[i] = 2e9;
q.push(make_pair(-,N));
while (!q.empty()) {
x = q.top().second; q.pop();
if (visb[x]) continue;
visb[x] = ;
for (i = ; i < E[x].size(); i++) {
to = E[x][i].first;
if (distb[x] + E[x][i].second < distb[to]) {
distb[to] = distb[x] + E[x][i].second;
q.push(make_pair(-distb[to],to));
}
}
}
} int main() { read(N); read(M); for (i = ; i <= M; i++) {
read(x[i]); read(y[i]); read(d[i]);
E[x[i]].push_back(make_pair(y[i],d[i]));
E[y[i]].push_back(make_pair(x[i],d[i]));
} dijkstra1();
dijkstra2(); shortest = dista[N];
ans = 2e9; for (i = ; i <= M; i++) {
if (dista[x[i]] + d[i] + distb[y[i]] > shortest)
ans = min(ans,dista[x[i]]+d[i]+distb[y[i]]);
if (dista[y[i]] + d[i] + distb[x[i]] > shortest)
ans = min(ans,dista[y[i]]+d[i]+distb[x[i]]);
} cout<< ans << endl; return ; }
【USACO06NOV】路障的更多相关文章
- P2865 [USACO06NOV]路障Roadblocks
P2865 [USACO06NOV]路障Roadblocks 最短路(次短路) 直接在dijkstra中维护2个数组:d1(最短路),d2(次短路),然后跑一遍就行了. attention:数据有不同 ...
- 洛谷——P2865 [USACO06NOV]路障Roadblocks
P2865 [USACO06NOV]路障Roadblocks 题目描述 Bessie has moved to a small farm and sometimes enjoys returning ...
- 络谷 P2865 [USACO06NOV]路障Roadblocks
P2865 [USACO06NOV]路障Roadblocks 题目描述 Bessie has moved to a small farm and sometimes enjoys returning ...
- P2865 【[USACO06NOV]路障Roadblocks】(次短路)
传送门 算法Dijkstra要求次短路 那么在不考虑重复走一条边的情况下 肯定是把最短路中的一段改成另一段 至少要换另一条边到路径里所以可以枚举所有不属于最短路的每条边(a,b) 那么dis(1,a) ...
- 【洛谷 P2865】 [USACO06NOV]路障Roadblocks(最短路)
题目链接 次短路模板题. 对每个点记录最短路和严格次短路,然后就是维护次值的方法了. 和这题一样. #include <cstdio> #include <queue> #in ...
- [USACO06NOV]路障---严格次短路
Description 贝茜把家搬到了一个小农场,但她常常回到FJ的农场去拜访她的朋友.贝茜很喜欢路边的风景,不想那么快地结束她的旅途,于是她每次回农场,都会选择第二短的路径,而不象我们所习惯的那样, ...
- 洛谷题解 P2865 【[USACO06NOV]路障Roadblocks】
链接:https://www.luogu.org/problemnew/show/P2865 题目描述 Bessie has moved to a small farm and sometimes e ...
- LG2865 [USACO06NOV]路障Roadblocks
题意 Bessie has moved to a small farm and sometimes enjoys returning to visit one of her best friends. ...
- luogu2865 [USACO06NOV]路障Roadblocks 次短路
注意:如果是这么个写法,堆数组要开成n+m的. 为什么呢?设想一下从1到2有m条长度递减的路,这岂不是要入队m次-- #include <algorithm> #include <i ...
- BZOJ 1726 洛谷 2865 [USACO06NOV]路障Roadblocks【次短路】
·求1到n的严格次短路. [题解] dijktra魔改?允许多次入队,改了次短路的值也要入队. #include<cstdio> #include<algorithm> #de ...
随机推荐
- webstorm(二):拼写warning
逼死强迫症之对拼写进行检查,警告 typo:in word “msgfromfather”
- 关于css虚线
今天遇到几个虚线效果,不能一下子反应过来具体属性. 一.dashed和dotted的区别 首先是dashed和dotted都是指“虚线”,但是两者显示的效果不尽相同. 从字面意思来看, dashed: ...
- WebGIS开发之用openlayers加载离线百度地图
因为项目需要,只有内网环境,没有外网环境,所以需要下载地图瓦片. 一.下载瓦片地图 这个可以自行在网上找一些地图瓦片下载器,下好的瓦片地图是分级的.大概如图这种类型. 二.在地图上显示标记 首先使用o ...
- 迈出从3K到1W的重要一步——掌握设计模式
IT职场的小菜经常有这样的疑问: 为什么一个相似的功能,大牛一会儿就搞定,然后悠闲地品着下午茶逛淘宝:而自己加班加点搞到天亮还做不完. 为什么用户提出需求变更后,大牛只需潇洒地敲敲键盘,改改配置:而自 ...
- activiti实现的请假流程
直接上图,还是有点复杂的
- 高级算法设计讲义 Lecture Notes for Advanced Algorithm Design
(Last modification: 2012-12-17) Textbooks: (1) David Williamson, David Shmoys. The Design of Approxi ...
- 应用程序中的server错误,没有名称为“ServiceBehavior”的服务行为
应用程序中的server错误,没有名称为"ServiceBehavior"的服务行为 今天在阅读"创建和使用Web服务"的相关内容,在浏览器中查 ...
- 零基础学python-3.2 变量赋值
这一节我们来具体展开变量赋值 1.以下我们举各种赋值的样例 anInt=12 anFloat=2.2 anStr='string' aList=['a','a','a'] anArray=(1,2,3 ...
- Version和Build的差别
[1]概念 iOS的版本号号.一个叫做Version,一个叫做Build,这两个值都能够在Xcode 中选中target,点击"Summary"后看到. Version在plist ...
- C++ string string string string string string string string string string
一. 初始化 string s1="i love you"; string s2(s1); //把s2初始化为string s1,注意不能写成string s2; s2(s1); ...