[bzoj4289]PA2012 Tax

4289: PA2012 Tax

Time Limit: 10 Sec Memory Limit: 128 MB
Submit: 996 Solved: 299
[Submit][Status][Discuss]
Description

给出一个N个点M条边的无向图,经过一个点的代价是进入和离开这个点的两条边的边权的较大值,求从起点1到点N的最小代价。起点的代价是离开起点的边的边权,终点的代价是进入终点的边的边权
N<=100000
M<=200000
Input

Output

Sample Input

4 5

1 2 5

1 3 2

2 3 1

2 4 4

3 4 8
Sample Output

12
HINT

Source

sol:

挺玄妙的一道题
首先考虑化边为点,把原图的一条边拆成2条有向边,这两条边对应新图的2个点。那么对于a->b,b->c,连接这两条边对应的新图的2个点,边权为max(e1,e2)即可。注意到这种建图在菊花图的情况下会出现m^2条边。
考虑这个max操作巨恶心。
注意到在我们把一条边拆成2条有向边之后。一个入边,连接到小于他的出边的情况下,代价就是这条入边本身,连接到大于他的出边的情况下,代价是这条入边加上出边与他的差值。我们考虑一个差分的做法。枚举一个中转点,将这个中转点的出边进行排序,每一条出边向相邻比他小的出边连接0的有向边,向相邻比他大的出边连接权值的差值,然后每一条入边连向比他小的第一条出边,这样建出来的图边数就是O(m)了。
容易注意到这样的话就是走一条入边相当于直接失去他的代价。然后取max的操作变成取了差值。说起来挺凌乱的,大家可以脑补一下。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值