正题

题目链接:https://www.luogu.com.cn/problem/P5934


题目大意

给出nnn个点mmm条边的一张图,再加入一条边(u,v,L)(u,v,L)(u,v,L)求至少删掉多少条边可以使得这条边即在最小生成树上又在最大生成树上。

1≤n≤2×104,1≤m≤2×1051\leq n\leq 2\times 10^4,1\leq m\leq 2\times 10^51≤n≤2×104,1≤m≤2×105


解题思路

稍微思考一下就不难发现这两个问其实是没有影响的,因为第一个问显然只需要删去边权小于LLL的,第二个问显然只需要删去边权大于LLL的。所以考虑分开求然后相加

那么考虑怎么让它在最小生成树上。考虑我们之前LCT\text{LCT}LCT维护最小生成树的做法,我们加入一条边(u,v,w)(u,v,w)(u,v,w)的时候,是找到u∼vu\sim vu∼v路径上的最大边然后和www比较。

那么如果原图中存在一条不经过这条边的路径且最大值比u,vu,vu,v要小。那么显然这条路径可以完全取代这条边,所以这条边一定不是最小生成树上的边。

那么同理我们只需要把所有边权小于LLL的边加入,然后再删去最少的边使得u,vu,vu,v不连通即可。这个用最小割解决就好了。

最大生成树同理


code

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
const int N=2e4+10,M=2e5+10,inf=1e9;
struct node{int to,next,w;
}a[M<<1];
struct edge{int x,y,w;
}e[M];
int n,m,s,t,L,tot=1,ls[N],dep[N],ans;
queue<int> q;
void addl(int x,int y,int w){a[++tot].to=y;a[tot].next=ls[x];ls[x]=tot;a[tot].w=w;a[++tot].to=x;a[tot].next=ls[y];ls[y]=tot;a[tot].w=w;return;
}
bool bfs(){while(!q.empty())q.pop();q.push(s);memset(dep,0,sizeof(dep));dep[s]=1;while(!q.empty()){int x=q.front();q.pop();for(int i=ls[x];i;i=a[i].next){int y=a[i].to;if(dep[y]||!a[i].w)continue;dep[y]=dep[x]+1;if(y==t)return 1;q.push(y);}}return 0;
}
int dinic(int x,int flow){if(x==t)return flow;int rest=0,k;for(int i=ls[x];i;i=a[i].next){int y=a[i].to;if(dep[x]+1!=dep[y]||!a[i].w)continue;rest+=(k=dinic(y,min(flow-rest,a[i].w)));a[i].w-=k;a[i^1].w+=k;if(rest==flow)return flow;}if(!rest)dep[x]=0;return rest;
}
int main()
{scanf("%d%d",&n,&m);for(int i=1;i<=m;i++)scanf("%d%d%d",&e[i].x,&e[i].y,&e[i].w);scanf("%d%d%d",&s,&t,&L);for(int i=1;i<=m;i++)if(e[i].w<L)addl(e[i].x,e[i].y,1);while(bfs())ans+=dinic(s,inf);memset(ls,0,sizeof(ls));tot=0;for(int i=1;i<=m;i++)if(e[i].w>L)addl(e[i].x,e[i].y,1);while(bfs())ans+=dinic(s,inf);printf("%d\n",ans);return 0;
}

P5934-[清华集训2012]最小生成树【最小割】相关推荐

  1. P2260 [清华集训2012]模积和,P2834 能力测验(二维除法分块)

    P2260 [清华集训2012]模积和 推导过程 我们假定n<=mn <= mn<=m ∑i=1n∑j=1m(nmodi)(mmodj),i≠j\sum_{i = 1} ^{n} ...

  2. [清华集训2012]串珠子

    题目链接:[清华集训2012]串珠子 因为得到的是一个连通图,所以我们可以考虑用任意连边的方案数减去不连通的方案数. 对于不连通的方案数,我们可以让一个子集连通,然后另一个子集随意连边.但是这样子集转 ...

  3. P5933 [清华集训2012]串珠子(连通性 状压 计数)

    P5933 [清华集训2012]串珠子 \(\color{yellow}{\bigstar\texttt{Trick}}\):遇到连通性题可以暂时忽略是否联通. 设 \(g_s\) 表示集合为 \(s ...

  4. BZOJ 2561: 最小生成树(最小割)

    U,V能在最小(大)生成树上,当且仅当权值比它小(大)的边无法连通U,V. 两次最小割就OK了. --------------------------------------------------- ...

  5. BZOJ2561最小生成树——最小割

    题目描述 给定一个边带正权的连通无向图G=(V,E),其中N=|V|,M=|E|,N个点从1到N依次编号,给定三个正整数u,v,和L (u≠v),假设现在加入一条边权为L的边(u,v),那么需要删掉最 ...

  6. [2018.3.30集训]path-对偶图-最小割

    题目大意 给出一个包含 n + 1 个结点的有向图,结点的编号为 0 到 n.图中有 m 条 有向边,第 i 条有向边起点为 ui,终点为 vi,且长度为 wi.并且这些边还满 足如下的性质: • 对 ...

  7. BZOJ.2521.[SHOI2010]最小生成树(最小割ISAP/Dinic)

    题目链接 一条边不变其它边减少可以看做一条边增加其它边不变. 假设要加的边lab为(A->B,v),那么肯定是要使除这条边外,A->B的每条路径上的最小权值都\(>v\),这样在连通 ...

  8. BSOJ 4062 -- 【清华集训2012】串珠子

    Description 铭铭有n个十分漂亮的珠子和若干根颜色不同的绳子.现在铭铭想用绳子把所有的珠子连接成一个整体. 现在已知所有珠子互不相同,用整数1到n编号.对于第i个珠子和第j个珠子,可以选择不 ...

  9. 【bzoj2521】[Shoi2010]最小生成树 网络流最小割

    题目描述 Secsa最近对最小生成树问题特别感兴趣.他已经知道如果要去求出一个n个点.m条边的无向图的最小生成树有一个Krustal算法和另一个Prim的算法.另外,他还知道,某一个图可能有多种不同的 ...

最新文章

  1. 准备战争“软测试”之DB基础知识
  2. spring 异常捕获异常_跟踪异常–第5部分–使用Spring进行计划
  3. 使用maven创建web项目
  4. 我是如何查找RFC官方资料的
  5. AndroidStudio_报错PluginApplicationException: Failed to apply plugin [id ‘com.and---Android原生开发工作笔记227
  6. 标量、矩阵对向量求导
  7. MAC 下如何更改brew源地址
  8. 霍树棠《忆真妃》又名《剑阁闻铃》
  9. java贪吃蛇素材png_贪吃蛇 - java代码库 - 云代码
  10. rust写操作系统 rCore tutorial 学习笔记:实验指导零 创建项目与启动
  11. 杨歌:金融电路与 Web3 经济模型原理
  12. SEO新手入门系列2022(五):挖掘关键词
  13. Python设置Latex公式中显示数学字体STIX
  14. PoE供电六大常见问题大全解析
  15. leetcode背包问题416、494、474、879、1049、279、322、377、518
  16. 仿牛客论坛项目(下)
  17. 汽车销售发票扫描识别系统助力汽车业
  18. r语言ggplot2一夜多图_关于GGPLOT2出图里的一页多图模式
  19. AndroidStudio更改SDK路径以及AVD模拟器路径
  20. Android日期时间与时区使用总结汇总

热门文章

  1. mysql数据恢复时显示多线程恢复_MySQL多线程备份恢复工具mydumper,myloder
  2. matlab如何求矩阵的转置矩阵,怎么用MATLAB程序求转置矩阵?急需,高手帮忙………………...
  3. java.awt.headless_以编程方式设置java.awt.headless = true
  4. linux 往文件写4k大小,[svc]为何linux ext4文件系统目录默认大小是4k?
  5. golang防止MySQL注入_mysql – 如何最大限度地降低golang服务中下游服务中SQL注入的风险?...
  6. 凝思系统改时间_国产操作系统往事:四十年激变,终再起风云
  7. ironpython3发布时间_.NET 基金会项目介绍-DLR/IronPython2/IronPython3
  8. 东北大学计算机 大一物理考试题,东北大学大学物理期末考题及答案Word版
  9. 计算机系统的工作方式,某计算机系统输入/输出采用双缓冲工作方式,其工作过程如下图所示,假设磁盘块与缓冲 - 信管网...
  10. html 保存文件指定路径,78.上传文件及在服务器保存文件到任意路径