传送门

分析

我们高兴的发现数据范围特别小,所以我们可以随便搞。因为一共只砍掉一条路,所以我们先算出对于任意一个点如果将它的出边割掉一条则它到达终点的最坏情况的最短距离是多少,然后我们从终点向起点反着跑,按最短路思想算出答案即可,具体实现见代码。

代码

#include<bits/stdc++.h>
using namespace std;
#define sp cout<<"---------------------------------------------------"<<endl;
const int inf=0x3f3f3f3f;
class WarTransportation{
public:
int head[],nxt[],to[],w[],cnt;
int d2[],d[],vis[],bad[];
int head2[],nxt2[],to2[],w2[],cnt2;
priority_queue<pair<int,int> >q;
void add(int x,int y,int z){
nxt[++cnt]=head[x];
head[x]=cnt;
to[cnt]=y;
w[cnt]=z;
nxt2[++cnt2]=head2[y];
head2[y]=cnt2;
to2[cnt2]=x;
w2[cnt2]=z;
}
int ndij(int s,int N){
memset(vis,,sizeof(vis));
memset(d,0x3f,sizeof(d));
d[s]=;
q.push(make_pair(,s));
while(!q.empty()){
int x=q.top().second;
q.pop();
if(vis[x])continue;
vis[x]=;
for(int i=head[x];i;i=nxt[i])
if(i!=N||x!=s){
int y=to[i];
if(d[x]+w[i]<d[y]){
d[y]=d[x]+w[i];
q.push(make_pair(-d[y],y));
}
}
}
return d[];
}
void getbad(int n){
int i,j;
memset(bad,,sizeof(bad));
for(i=;i<=n;i++)
if(i!=)
for(j=head[i];j;j=nxt[j])
bad[i]=max(bad[i],ndij(i,j));
}
int getans(){
memset(vis,,sizeof(vis));
memset(d2,0x3f,sizeof(d2));
d2[]=;
q.push(make_pair(,));
while(!q.empty()){
int x=q.top().second;
q.pop();
if(vis[x])continue;
vis[x]=;
for(int i=head2[x];i;i=nxt2[i]){
int y=to2[i];
if(max(bad[y],d2[x]+w2[i])<d2[y]){
d2[y]=max(bad[y],d2[x]+w2[i]);
q.push(make_pair(-d2[y],y));
}
}
}
if(d2[]>=inf)return -;
return d2[];
}
int messenger(int n,vector<string>highways){
int x,y,z;char ch;
stringstream buf(accumulate(highways.begin(),highways.end(),string()));
do{
buf>>x>>y>>z;
add(x,y,z);
}while(buf>>ch);
getbad(n);
return getans();
}
};

最新文章

  1. Java程序员从笨鸟到菜鸟之(一百)sql注入攻击详解(一)sql注入原理详解
  2. springMVC之配置
  3. csuoj 1507: 超大型LED显示屏
  4. 关于创建可执行的jar文件(assembly)
  5. Java下Web MVC的领跑者:SpringMVC
  6. BZOJ 3715: [PA2014]Lustra
  7. shell脚本加密
  8. 一步一步实现基于Task的Promise库(一)Promise的基本实现
  9. 转Delphi中Memo显示行号列号
  10. HDU2504:又见GCD
  11. 老版VC++线程池
  12. iOS高效编程秘诀—坚持编程习惯
  13. React---入门(1)
  14. Map、List、Set在Java中的各种遍历方法
  15. 采用自定义协议代替OCX组件
  16. 【Maven】安装配置、目录结构、配置文件、常见命令
  17. javascript与XML
  18. Mahout介绍
  19. C++中虚函数和纯虚函数的区别与总结
  20. jenkins使用HTML Publisher Plugin插件 拉取报告样式缺失问题解决

热门文章

  1. WinForm判断程序是否已经在运行,且只允许运行一个实例
  2. 2018.7.2 AK22 不良品分析
  3. python_判断字符串编码的方法
  4. 使用visio 2010建立sql server数据模型——手动画、利用逆向工程
  5. 统计日志中ip出现的次数
  6. 网络爬虫必备知识之concurrent.futures库
  7. unity 联机调试(android ios)
  8. [转]css讲解 font-weight:bold和bolder区别
  9. Java基础--枚举Enum
  10. 2018年长沙理工大学第十三届程序设计竞赛 Dzzq的离散数学教室1