传送门

分析

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

代码

#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();
}
};

WarTransportation TopCoder - 8404的更多相关文章

  1. TopCoder kawigiEdit插件配置

    kawigiEdit插件可以提高 TopCoder编译,提交效率,可以管理保存每次SRM的代码. kawigiEdit下载地址:http://code.google.com/p/kawigiedit/ ...

  2. 记第一次TopCoder, 练习SRM 583 div2 250

    今天第一次做topcoder,没有比赛,所以找的最新一期的SRM练习,做了第一道题. 题目大意是说 给一个数字字符串,任意交换两位,使数字变为最小,不能有前导0. 看到题目以后,先想到的找规律,发现要 ...

  3. TopCoder比赛总结表

    TopCoder                        250                              500                                 ...

  4. Topcoder几例C++字符串应用

    本文写于9月初,是利用Topcoder准备应聘时的机试环节临时补习的C++的一部分内容.签约之后,没有再进行练习,此文暂告一段落. 换句话说,就是本文太监了,一直做草稿看着别扭,删掉又觉得可惜,索性发 ...

  5. TopCoder

    在TopCoder下载好luncher,网址:https://www.topcoder.com/community/competitive%20programming/ 选择launch web ar ...

  6. TopCoder SRM 596 DIV 1 250

    body { font-family: Monospaced; font-size: 12pt } pre { font-family: Monospaced; font-size: 12pt } P ...

  7. 求拓扑排序的数量,例题 topcoder srm 654 div2 500

    周赛时遇到的一道比较有意思的题目: Problem Statement      There are N rooms in Maki's new house. The rooms are number ...

  8. TopCoder SRM 590

     第一次做TC,不太习惯,各种调试,只做了一题...... Problem Statement     Fox Ciel is going to play Gomoku with her friend ...

  9. Topcoder Arena插件配置和训练指南

    一. Arena插件配置 1. 下载Arena 指针:http://community.topcoder.com/tc?module=MyHome 左边Competitions->Algorit ...

随机推荐

  1. web端测试小知识

    1.测试web端会看请求.数据.定位问题 在浏览器中按F12按钮,然后继续操作 一个操作有时请求很多个接口,点击“preview”,查看返回的数据 ========================== ...

  2. 学习动态性能表(13)--v$open_cursor

    学习动态性能表 第13篇--V$OPEN_CURSOR  2007.6.8 本视图列出session打开的所有cursors,很多时候都将被用到,比如:你可以通过它查看各个session打开的curs ...

  3. 《hadoop权威指南》关于hive的第一个小例子的演示

    本文是<hadoop权威指南>关于hive的小例子,通过这个例子可以很好地看出来hive是个什么东西. 前提是已经配置好hive的远程连接版本的环境,我是用了MYSQL数据库保存元数据. ...

  4. extjs控制器调用其他视图的函数实现控件赋值。

  5. spring boot 学习10 定义springboot的两种方法

    使用spring boot的两种方法: A:继承spring-boot-starter-parent项目 这种方式很简单,只需要在POM里面添加parent父工程即可. B: 如果你不喜欢继承spri ...

  6. highcharts图表显示鼠标选择的Y轴提示线

    tooltip: { shared: true, crosshairs: [true, false] },

  7. Celery-4.1 用户指南:Testing with Celery (用 Celery测试)

    任务与单元测试 在单元测试中测试任务行为的推荐方法是用mocking. Eager mode: task_always_eager 设置启用的 eager 模式不适用于单元测试. 当使用eager模式 ...

  8. 在.net中使用redis(StackExchange.Redis)

    本文介绍如何在.net中使用redis 安装 代码使用 StackExchange.Redis基础使用 StackExchange.Redis中的事务 安装(windows平台) 安装Chocolat ...

  9. hadoop block大小为128的原因

    1.减轻了namenode的压力 原因是hadoop集群在启动的时候,datanode会上报自己的block的信息给namenode.namenode把这些信息放到内存中.那么如果块变大了,那么nam ...

  10. docker 笔记(2) base镜像

    base 镜像有两层含义: 不依赖其他镜像,从 scratch 构建. 其他镜像可以之为基础进行扩展. 所以,能称作 base 镜像的通常都是各种 Linux 发行版的 Docker 镜像,比如 Ub ...