Description
一个图, \(n\) 个点 \(m\) 条边,求将一条边距离翻倍后使 \(1-n\) 最短路径增加的最大增量.
Sol
Dijstra.
先跑一边最短路,然后枚举最短路,将路径翻倍然后跑Dijstra...
因为不在最短路径上的边没用贡献,然后最短路径最长为 \(n-1\)
复杂度 \(O(nmlogm\)
Code
/**************************************************************
Problem: 3445
User: BeiYu
Language: C++
Result: Accepted
Time:32 ms
Memory:3332 kb
****************************************************************/ #include <cstdio>
#include <cstring>
#include <utility>
#include <vector>
#include <queue>
#include <functional>
#include <iostream>
using namespace std; typedef long long LL;
typedef pair< LL,int > pr;
#define mpr make_pair
const int N = 255; int n,m,cnt;
int b[N],p[N];
LL ans,disn;
LL d[N];
struct Edge{ int fr,to;LL w; }edge[N*N*2];
vector< int > g[N];
priority_queue< pr,vector< pr >,greater< pr > > q;
vector< int > path; inline int in(int x=0){ scanf("%d",&x);return x; }
void Add_Edge(int fr,int to,int w){
edge[++cnt]=(Edge){ fr,to,w };
g[fr].push_back(cnt);
}
void GetPath(){
for(int x=n;x!=1;x=edge[p[x]].fr) path.push_back(p[x]);
}
void Dijstra(int s,int fst){
memset(b,0,sizeof(b));
memset(d,0x3f,sizeof(d));
d[s]=0,q.push(mpr(0LL,s));
for(int x;!q.empty();){
x=q.top().second,q.pop();if(b[x]) continue;b[x]=1;
for(int i=0,lim=g[x].size();i<lim;i++){
int v=edge[g[x][i]].to;LL w=edge[g[x][i]].w;
// cout<<x<<" "<<v<<" "<<w<<" "<<d[x]<<" "<<d[v]<<endl;
if(d[x]+w < d[v]){
d[v]=d[x]+w,p[v]=g[x][i];
q.push(mpr(d[v],v));
}
}
}
// cout<<d[n]<<endl;
if(fst) disn=d[n],GetPath();
else ans=max(ans,d[n]-disn);
}
int main(){
n=in(),m=in();
for(int i=1,u,v,w;i<=m;i++) u=in(),v=in(),w=in(),Add_Edge(u,v,w),Add_Edge(v,u,w);
Dijstra(1,1); // for(int i=0,lim=path.size();i<lim;i++) cout<<edge[path[i]].fr<<" "<<edge[path[i]].to<<" "<<edge[path[i]].w<<endl; for(int i=0,lim=path.size();i<lim;i++) edge[path[i]].w*=2,Dijstra(1,0),edge[path[i]].w/=2;
cout<<ans<<endl;
return 0;
}
BZOJ 3445: [Usaco2014 Feb] Roadblock的更多相关文章
-
BZOJ 3446: [Usaco2014 Feb]Cow Decathlon( 状压dp )
水状压dp. dp(x, s) = max{ dp( x - 1, s - {h} ) } + 奖励(假如拿到的) (h∈s). 时间复杂度O(n * 2^n) ------------------- ...
-
[Usaco2014 Feb] Roadblock
有一个无向图,共N个节点,编号1至N,共M条边.FJ在节点1,它想到达节点N.FJ总是会选择最短路径到达节点N .作为捣蛋的奶牛Bessie,它想尽量延迟FJ到达节点N的时间,于是Bessie决定从M ...
-
[bzoj 1782] [Usaco2010 Feb]slowdown慢慢游
[bzoj 1782] [Usaco2010 Feb]slowdown慢慢游 Description 每天Farmer John的N头奶牛(1 <= N <= 100000,编号1-N)从 ...
-
BZOJ_3448_[Usaco2014 Feb]Auto-complete_Trie树
BZOJ_3448_[Usaco2014 Feb]Auto-complete_Trie Description Bessie the cow has a new cell phone and enjo ...
-
bzoj3446[Usaco2014 Feb]Cow Decathlon*
bzoj3446[Usaco2014 Feb]Cow Decathlon 题意: FJ有n头奶牛.FJ提供n种不同的技能供奶牛们学习,每头奶牛只能学习一门技能,每门技能都要有奶牛学习. 第i头奶牛学习 ...
-
【BZOJ 3445】【Usaco2014 Feb】Roadblock
http://www.lydsy.com/JudgeOnline/problem.php?id=3445 加倍的边一定在最短路上(否则继续走最短路). 最短路长度是O(n)的,暴力扫最短路上的每条边, ...
-
[ BZOJ 3445 ] Roadblock
\(\\\) \(Description\) 给出一张\(N\) 个点\(M\)条边的无向图,选择一条边使其权值翻倍,求操作后比操作前最短路长度增量最大值. \(1\le N\le 250\),\(1 ...
-
BZOJ 3940: [Usaco2015 Feb]Censoring
3940: [Usaco2015 Feb]Censoring Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 367 Solved: 173[Subm ...
-
Bzoj 1609: [Usaco2008 Feb]Eating Together麻烦的聚餐 二分
1609: [Usaco2008 Feb]Eating Together麻烦的聚餐 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 1272 Solve ...
随机推荐
-
深入浅出Mybatis系列(五)---TypeHandler简介及配置(mybatis源码篇)
上篇文章<深入浅出Mybatis系列(四)---配置详解之typeAliases别名(mybatis源码篇)>为大家介绍了mybatis中别名的使用,以及其源码.本篇将为大家介绍TypeH ...
-
winform记事本初步实现
public Form1() { InitializeComponent(); } private void 剪切TToolStripMenuItem_Click(object sender, Eve ...
-
css3 calc()方法详解
calc()对大家来说,或许很陌生,不太会相信calc()是css中的部分.因为看其外表像个函数,既然是函数为何又出现在CSS中呢?这一点也让我百思不得其解,今天有一同事告诉我,说CSS3中有一个属性 ...
-
基于ASP.NET MVC 4/5 Razor的模块化/插件式架构实现
概述 在日常开发中, 我们经常谈起模块化/插件化架构,这样可既可以提高开效率,又可以实现良好的扩展性,尤其对于产品化的系统有更好的实用性. 架构 我们采用的是MVC5(本文中介绍的方法对于MVC4也是 ...
-
MySQL基本概念
MySQL 数据库 MySQL可分为三个层次:文件层次,服务层次,界面 常用的数据类型:int 整数float double decimal ——小数(要在十进位栏里设置小数点后最大显示位数)varc ...
-
Python 核心数据类型
1.Python中一切皆对象 2.Python中不需要申明对象类型,对象的类型由运行的表达式决定 3.创建了对象意味着绑定了对象的操作到此对象,也就是在固有的对象上只能调用该对象特有的操作.比如只能将 ...
-
Java根据出生年月日获取到当前日期的年月日
源码链接:http://pan.baidu.com/s/1sj61IUD
-
centos 6.5安装esx sdk
1. RHEL 6.3 64 bit yum install e2fsprogs-devel libuuid-devel yum install glibc.i686 yum install perl ...
-
支付平台程序,支付程序,网络pos程序,api接口程序,锋锐支付平台程序开发领导者!
支付平台程序,支付程序,网络pos程序,api接口程序,锋锐支付平台程序开发领导者! 锋锐支付平台程序(www.100freenet.com)隶属于盐城市沐良商贸有限公司(沈阳杰速网络科技有限公司旗下 ...
-
NSIS:IfFileExists+Goto实现简单跳转
原文 NSIS:IfFileExists+Goto实现简单跳转 在用户手册中有相关示例,但也许有的同学没有发现,那么我再发一个,仅供入门学习参考. IfFileExists 要检测的文件 文件存在时跳 ...