这道题没弄明白

初始模型很好想,是用到了最小生成树的性质

加入非树边后树上形成的环,非树边一定大于等于任意树边

然后考虑树边一定是缩小,非树边一定是增大

有di+wi>=dj-wj wi+wj>=dj-di(j是加入i形成的环上的边)

然后不知道为什么求∑wi最小就是跑最大费用可行流

求神犇指教

 type node=record
po,next,cost,flow:longint;
end; var e:array[..] of node;
v,f:array[..] of boolean;
a:array[..,..] of longint;
d,pre,cur,w,p:array[..] of longint;
q:array[..] of longint;
x,y,len,i,j,n,m,t,k:longint; procedure add(x,y,f,c:longint);
begin
inc(len);
e[len].po:=y;
e[len].next:=p[x];
e[len].cost:=c;
e[len].flow:=f;
p[x]:=len;
end; procedure build(x,y,f,c:longint);
begin
add(x,y,f,c);
add(y,x,,-c);
end; function dfs(x:longint):boolean;
var i:longint;
begin
f[x]:=true;
if x=j then
begin
q[]:=-;
exit;
end;
for i:= to n do
if not f[i] and v[a[x,i]] then
begin
inc(t);
q[t]:=a[x,i];
dfs(i);
if q[]=- then exit;
q[t]:=;
dec(t);
end;
end; function spfa:boolean;
var f,r,y,i,j,x:longint;
begin
f:=;
r:=;
q[]:=;
d[]:=;
for i:= to t do
d[i]:=-;
fillchar(v,sizeof(v),false);
while f<=r do
begin
x:=q[f];
v[x]:=false;
i:=p[x];
while i<>- do
begin
y:=e[i].po;
if e[i].flow> then
if d[y]<d[x]+e[i].cost then
begin
d[y]:=d[x]+e[i].cost;
pre[y]:=x;
cur[y]:=i;
if not v[y] then
begin
v[y]:=true;
inc(r);
q[r]:=y;
end;
end;
i:=e[i].next;
end;
inc(f);
end;
if d[t]>= then exit(true) else exit(false);
end; function maxcost:longint;
var i,j:longint;
begin
maxcost:=;
while spfa do
begin
i:=t;
while i<> do
begin
j:=cur[i];
dec(e[j].flow);
inc(e[j xor ].flow);
i:=pre[i];
end;
maxcost:=maxcost+d[t];
end;
end; begin
len:=-;
fillchar(p,sizeof(p),);
readln(n,m);
for i:= to m do
begin
readln(x,y,w[i]);
a[x,y]:=i;
a[y,x]:=i;
end;
for i:= to n- do
begin
readln(x,y);
k:=a[x,y];
v[k]:=true;
build(,k,,);
end;
for i:= to n do
for j:=i+ to n do
if (a[i,j]>) and not v[a[i,j]] then
begin
build(a[i,j],m+,,);
fillchar(f,sizeof(f),false);
t:=; q[]:=;
dfs(i);
for k:= to t do
if w[q[k]]>w[a[i,j]] then build(q[k],a[i,j],,w[q[k]]-w[a[i,j]]);
end;
t:=m+;
writeln(maxcost);
end.

bzoj1937的更多相关文章

  1. 【bzoj1937】 Shoi2004—Mst 最小生成树

    http://www.lydsy.com/JudgeOnline/problem.php?id=1937 (题目链接) 题意 一个无向图,给出一个生成树,可以修改每条边的权值,问最小修改多少权值使得给 ...

  2. [BZOJ1937][SHOI2004]Mst最小生成树(KM算法,最大费用流)

    1937: [Shoi2004]Mst 最小生成树 Time Limit: 3 Sec  Memory Limit: 64 MBSubmit: 802  Solved: 344[Submit][Sta ...

  3. 【BZOJ1937】[Shoi2004]Mst 最小生成树 KM算法(线性规划)

    [BZOJ1937][Shoi2004]Mst 最小生成树 Description Input 第一行为N.M,其中 表示顶点的数目, 表示边的数目.顶点的编号为1.2.3.…….N-1.N.接下来的 ...

  4. BZOJ1937 [Shoi2004]Mst 最小生成树

    首先由贪心的想法知道,树边只减不加,非树边只加不减,令$w_i$表示i号边原来的边权,$d_i$表示i号边的改变量 对于一条非树边$j$连接着两个点$x$.$y$,则对于$xy$这条路径上的所有树边$ ...

  5. 【KM】BZOJ1937 [Shoi2004]Mst 最小生成树

    这道题拖了好久因为懒,结果1A了,惊讶∑( 口 || [题目大意] 给定一张n个顶点m条边的有权无向图.现要修改各边边权,使得给出n-1条边是这张图的最小生成树,代价为变化量的绝对值.求最小代价之和. ...

  6. APIO2015题解

    分组赛讲课讲了APIO2015的题,于是回去就做完了 稍微写一点题解吧 bzoj4069 逐位处理的简单题,然后就是bool型dp 然后a=1 的时候可以把一位状态干掉 当一维状态单调且是bool型d ...

  7. bzoj网络流

    近期看了一些bzoj的网络流,深感智商不够.不过对于网络流又有了进一步的理解. 还是mark一下吧. 献上几篇论文:1)<最小割模型在信息学竞赛中的应用> 2)<浅析一类最小割问题& ...

  8. AHOI2018训练日程(3.10~4.12)

    (总计:共90题) 3.10~3.16:17题 3.17~3.23:6题 3.24~3.30:17题 3.31~4.6:21题 4.7~4.12:29题 ZJOI&&FJOI(6题) ...

随机推荐

  1. (转载)用SQL语句创建Access表

    <来源网址:http://www.delphifans.com/infoview/Article_220.html>用SQL语句创建Access表 很久以前弄的,用了一天的时间,没有什么技 ...

  2. C# 返回json结果集,js日期格式化

    asp.net mvc返回json结果集 return Json(new { total = totalCount, rows = result }, JsonRequestBehavior.Allo ...

  3. 【Passport】微软过时的技术

    虽然已过时,没来得及体验,摘录一段别人的文章,假装对passport的了解 微软在过去的身份验证服务上,一直采用的Passport验证,但已经是N年前推出来的一个软件架构,当然也被软件界很多地方采用到 ...

  4. 【linQ】DataContext 入门 , 和 hql , jpql 一样好用

    DataContext 和 LINQ结合后会有巨大的能量 public class UserDataContext : DataContext { public Table<User> U ...

  5. MVC中Controller和Action讲解上篇

    一般我们用mvc开发程序时一般需要三个步骤, 创建模型.创建控制器.创建视图 之前开发程序都是按照这样的步骤来开发的,也没有想过mvc的原理,比如route是怎么找到controller的,contr ...

  6. linux ssh 安装、安全设置

    环境:ubuntu 12.04   一.简单安装设置 1. 安装ssh 服务器 $ sudo apt-get install openssh 2. 查看运行状态 $ service ssh statu ...

  7. 一个有意思的js实例,你会吗??[原创]

    首先,看看下面一个js例子,你觉得会输出什么呢? function fn(a){ a(); function a(){ console.log(2); } var a = function(){ co ...

  8. bnu 4358 左手定则 (搜索)

    http://www.bnuoj.com/bnuoj/problem_show.php?pid=4358 [题意]:给定起始位置和方向和目的地,按照左转.前进.右转.后退的优先级递减,也就是说能左转就 ...

  9. 关于sqlmap无法打开的问题解决办法

    sqlmap无法打开这个问题困扰了我几天,今天才从一个论坛的视频教程里看到这个办法,有可能对其他有些情况依旧没用,但是希望和我一样状况的人看到这篇文章,能收到一些启发 我之前百度了很久,google了 ...

  10. 各系统下设置输入法按键为ctrl+shift+space

    xp=====(一直找不到..原来右边是可以下拉的).. linux  ibus----- 设置---直接按下Ctrl+Shift+Space