【luogu P1186】玛丽卡
https://www.luogu.org/problem/show?pid=1186
考虑暴力,枚举图上每一条边删去后跑Dijkstra,取M次的最大值。
仔细想想就会发现删除最短路以外的边对最短路毫无影响,于是先跑出最短路,然后枚举最短路上的每一条边删去后跑Dijkstra,取这几次的最大值。
#include <iostream>
#include <vector>
#include <queue>
#include <cstring>
#define maxn 1005
using namespace std;
const int inf = 0x3f3f3f3f;
int n, m;
struct edge
{
int from, to, weight;
};
vector<edge> e;
vector<int> g[maxn]; bool known[maxn];
int dist[maxn], front[maxn];
typedef pair<int, int> pin;
priority_queue<pin, vector<pin>, greater<pin>> pq;
void dijkstra()
{
for (int i = ; i <= n; ++i)
{
dist[i] = inf;
known[i] = false;
front[i] = -;
}
while (!pq.empty())
pq.pop();
dist[] = ;
pq.push(make_pair(dist[], ));
while (!pq.empty() && !known[n])
{
int x = pq.top().second;
pq.pop();
if (known[x])
continue;
known[x] = true;
for (int i = ; i < g[x].size(); i++)
{
edge &ed = e[g[x][i]];
if (!known[ed.to] && dist[ed.to] > dist[x] + ed.weight)
{
dist[ed.to] = dist[x] + ed.weight;
front[ed.to] = g[x][i];
pq.push(make_pair(dist[ed.to], ed.to));
}
}
}
}
vector<int> path; int main()
{
cin >> n >> m;
int u, v, w;
for (int i = ; i <= m; i++)
{
cin >> u >> v >> w;
e.push_back((edge){u, v, w});
g[u].push_back(e.size() - );
e.push_back((edge){v, u, w});
g[v].push_back(e.size() - );
}
dijkstra();
for (int i = front[n]; i != -; i = front[e[i].from])
path.push_back(i); int ans = dist[n];
for (int i = ; i < path.size(); i++)
{
w = e[path[i]].weight;
e[path[i]].weight = e[path[i] ^ ].weight = inf;
dijkstra();
if (dist[n] != inf)
ans = max(ans, dist[n]);
e[path[i]].weight = e[path[i] ^ ].weight = w;
}
cout << ans;
return ;
}
【luogu P1186】玛丽卡的更多相关文章
- luogu P1186 玛丽卡
题目描述 麦克找了个新女朋友,玛丽卡对他非常恼火并伺机报复. 因为她和他们不住在同一个城市,因此她开始准备她的长途旅行. 在这个国家中每两个城市之间最多只有一条路相通,并且我们知道从一个城市到另一个城 ...
- Luogu P1186 玛丽卡 【最短路】By cellur925
题目描述 麦克找了个新女朋友,玛丽卡对他非常恼火并伺机报复. 因为她和他们不住在同一个城市,因此她开始准备她的长途旅行. 在这个国家中每两个城市之间最多只有一条路相通,并且我们知道从一个城市到另一个城 ...
- 【luogu P1186 玛丽卡】 题解
题目链接:https://www.luogu.org/problemnew/show/P1186 邻接表开大开小真的奇妙,毒瘤玩意,再您妈的见. #include <queue> #inc ...
- 洛谷P1186 玛丽卡 spfa+删边
洛谷P1186 玛丽卡http://blog.csdn.net/huihao123456/article/details/73414139题目描述 麦克找了个新女朋友,玛丽卡对他非常恼火并伺机报复. ...
- 洛谷——P1186 玛丽卡
P1186 玛丽卡 题目描述 麦克找了个新女朋友,玛丽卡对他非常恼火并伺机报复. 因为她和他们不住在同一个城市,因此她开始准备她的长途旅行. 在这个国家中每两个城市之间最多只有一条路相通,并且我们知道 ...
- 洛谷 P1186 玛丽卡
P1186 玛丽卡 题目描述 麦克找了个新女朋友,玛丽卡对他非常恼火并伺机报复. 因为她和他们不住在同一个城市,因此她开始准备她的长途旅行. 在这个国家中每两个城市之间最多只有一条路相通,并且我们知道 ...
- 洛谷—— P1186 玛丽卡
https://www.luogu.org/problem/show?pid=1186 题目描述 麦克找了个新女朋友,玛丽卡对他非常恼火并伺机报复. 因为她和他们不住在同一个城市,因此她开始准备她的长 ...
- P1186 玛丽卡
题目描述 麦克找了个新女朋友,玛丽卡对他非常恼火并伺机报复. 因为她和他们不住在同一个城市,因此她开始准备她的长途旅行. 在这个国家中每两个城市之间最多只有一条路相通,并且我们知道从一个城市到另一个城 ...
- 洛谷P1186 玛丽卡
题目描述 麦克找了个新女朋友,玛丽卡对他非常恼火并伺机报复. 因为她和他们不住在同一个城市,因此她开始准备她的长途旅行. 在这个国家中每两个城市之间最多只有一条路相通,并且我们知道从一个城市到另一个城 ...
- 洛谷P1186玛丽卡
传送门啦 先跑一遍最短路,将最短路的路径记录下来,然后枚举每一条最短路的边,将其断掉,记录此时的1-n的时间,取其中最大的一个时间即为所求. (通过 $ cut[][] $ 和 $ f[] $ 进行操 ...
随机推荐
- java 随记
后台开发的过程中积累的关于java的杂记 架构 SSH框架 为什么要分层? 因为分层使代码变得清晰,容易写也容易阅读,更重要的是让代码扩展性更好,层与层之间的改动不会互相影响 各层的分工 dao--与 ...
- 安装jdk时出现java -version权限不够问题
今天在ubuntu上安装jdk的时候,最后测试java -version总是不行,出现了 bash: /home/jdk1.7.0_25/bin/java: 权限不够的问题 百度之后,在http:// ...
- Problem Q
Problem Description A factory produces products packed in square packets of the same height h and of ...
- Oil Deposits
Problem Description The GeoSurvComp geologic survey company is responsible for detecting underground ...
- URLs对象 blob URL
把指向数据的URL保存到file或者blob对象里,好处就是不需要先文件读取内容然后才能用. function createObjectURL(blob){if (window.URL){retu ...
- Mac上查看隐藏文件夹/文件
一.查看隐藏文件夹: 可以直接在终端执行 open ~/文件夹名称 如: open ~/.ssh 二.查看隐藏文件: 在Finder下进入你想要操作的文件夹,按快捷键Command + F 调出搜索窗 ...
- 引用reference作用域scope闭包closure上下文context用法
引用(reference).作用域(scope).闭包(closure)以及上下文(context)是JavaScript重中之重的基础,也是学习好JavaScript的基础.在这里我以浅显的理解给大 ...
- 在64位Win7环境+64位JDK下,运行64位Eclipse,提示“Failed to load the JNI shared library”错误,提示jvm.dll不对
-startup plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar --launcher.library plugins/org.ecl ...
- php中向前台js中传送一个二维数组
在php中向前台js中传送一个二维数组,并在前台js接收获取其中值的全过程方法: (1),方法说明:现在后台将数组发送到前台 echo json_encode($result); 然后再在js页面中的 ...
- html5+ XMLHttpRequest
XMLHttpRequest 让发送一个HTTP请求变得非常容易.你只需要简单的创建一个请求对象实例,打开一个URL,然后发送这个请求.当传输完毕后,结果的HTTP状态以及返回的响应内容也可以从请求对 ...