洛谷3128 [USACO15DEC]最大流Max Flow——树上差分
题目:https://www.luogu.org/problemnew/show/P3128
树上差分。用离线lca,邻接表存好方便。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=5e4+,M=1e5+;
int n,m,hd[N],xnt,fa[N],pre[N],c[N],qhd[N],t[M<<],nxt[M<<],ans;
bool vis[N];
struct Ed{
int nxt,to;Ed(int n=,int t=):nxt(n),to(t) {}
}ed[N<<];
int rdn()
{
int ret=;char ch=getchar();
while(ch>''||ch<'')ch=getchar();
while(ch>=''&&ch<='')(ret*=)+=ch-'',ch=getchar();
return ret;
}
void add(int x,int y)
{
ed[++xnt]=Ed(hd[x],y);hd[x]=xnt;
ed[++xnt]=Ed(hd[y],x);hd[y]=xnt;
}
void ad(int x,int y)
{
t[++xnt]=y;nxt[xnt]=qhd[x];qhd[x]=xnt;
t[++xnt]=x;nxt[xnt]=qhd[y];qhd[y]=xnt;
}
int find(int a){return fa[a]==a?a:fa[a]=find(fa[a]);}
void dfs(int cr)
{
vis[cr]=;
for(int i=qhd[cr],v;i;i=nxt[i])
if(vis[v=t[i]])
{
int lca=find(v),pr=pre[lca];
c[cr]++;c[v]++;c[lca]--;c[pr]--;
}
for(int i=hd[cr],v;i;i=ed[i].nxt)
if((v=ed[i].to)!=pre[cr])
{
pre[v]=cr;dfs(v);
}
fa[cr]=pre[cr];
}
void dfsx(int cr)
{
for(int i=hd[cr],v;i;i=ed[i].nxt)
if((v=ed[i].to)!=pre[cr])
dfsx(v),c[cr]+=c[v];
ans=max(ans,c[cr]);
}
int main()
{
n=rdn();m=rdn();int x,y;
for(int i=;i<n;i++)
{
x=rdn();y=rdn();add(x,y);
}
xnt=;
for(int i=;i<=m;i++)
{
x=rdn();y=rdn();ad(x,y);
}
for(int i=;i<=n;i++)fa[i]=i;
dfs();dfsx();
printf("%d\n",ans);
return ;
}
洛谷3128 [USACO15DEC]最大流Max Flow——树上差分的更多相关文章
- 洛谷P3128 [USACO15DEC]最大流Max Flow(树上差分)
题意 题目链接 Sol 树上差分模板题 发现自己傻傻的分不清边差分和点差分 边差分就是对边进行操作,我们在\(u, v\)除加上\(val\),同时在\(lca\)处减去\(2 * val\) 点差分 ...
- 洛谷 P3128 [ USACO15DEC ] 最大流Max Flow —— 树上差分
题目:https://www.luogu.org/problemnew/show/P3128 倍增求 lca 也写错了活该第一次惨WA. 代码如下: #include<iostream> ...
- 洛谷 P3128 [USACO15DEC]最大流Max Flow-树上差分(点权/点覆盖)(模板题)
因为徐州现场赛的G是树上差分+组合数学,但是比赛的时候没有写出来(自闭),背锅. 会差分数组但是不会树上差分,然后就学了一下. 看了一些东西之后,对树上差分写一点个人的理解: 首先要知道在树上,两点之 ...
- 洛谷P3128 [USACO15DEC]最大流Max Flow
P3128 [USACO15DEC]最大流Max Flow 题目描述 Farmer John has installed a new system of N-1N−1 pipes to transpo ...
- 洛谷P3128 [USACO15DEC]最大流Max Flow [树链剖分]
题目描述 Farmer John has installed a new system of pipes to transport milk between the stalls in his b ...
- 洛谷P3128 [USACO15DEC]最大流Max Flow [倍增LCA]
题目描述 Farmer John has installed a new system of pipes to transport milk between the stalls in his b ...
- 洛谷P3128 [USACO15DEC]最大流Max Flow (树上差分)
###题目链接### 题目大意: 给你一棵树,k 次操作,每次操作中有 a b 两点,这两点路上的所有点都被标记一次.问你 k 次操作之后,整棵树上的点中被标记的最大次数是多少. 分析: 1.由于数 ...
- P3128 [USACO15DEC]最大流Max Flow (树上差分)
题目描述 Farmer John has installed a new system of N-1N−1 pipes to transport milk between the NN stalls ...
- 洛谷——P3128 [USACO15DEC]最大流Max Flow
https://www.luogu.org/problem/show?pid=3128 题目描述 Farmer John has installed a new system of pipes to ...
随机推荐
- String类的endsWith()方法和startsWith()方法
String 的endsWith() 方法用于测 试字符串是否以指定的后缀结束.如果参数表示的字符序列是此对象表示的字符序列的后缀,则返回 true:否则返回 false.注意,如果参数是空字符串,或 ...
- python 虚拟环境virtualenv搭建
一.安装虚拟环境 pip install virtualenv -i https://pypi.douban.com/simple 用国内镜像,速度更快 二.创建虚拟目录 在需要存放软件工程的 ...
- tensorflow+inceptionv3图像分类网络结构的解析与代码实现
tensorflow+inceptionv3图像分类网络结构的解析与代码实现 论文链接:论文地址 ResNet传送门:Resnet-cifar10 DenseNet传送门:DenseNet SegNe ...
- [转]C# 中的委托和事件 + 观察者模式
引言 委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易.它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去 ...
- 廖雪峰Java10加密与安全-4加密算法-5非对称加密算法
1.非对称加密 非对称加密就是加密和解密使用的不是相同的密钥 方法1: * 加密:用自己的私钥加密,然后发送给对方:encrypt(privateKeyA, message)->s * 解密:对 ...
- webpack处理字体文件
1. 安装 file-loader npm install file-loader --save-dev 2. 在webpack.config.js中配置 module.exports={ //... ...
- String和StringBuffer的区别;字符串的一些基本方法
String 和 StringBuffer区别 字符串广泛应用 在Java 编程中,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串. 需要注意的是,String的 ...
- Django项目: 5.新闻主页
一.功能需求分析 1.功能 轮播图 推荐文章列表 文章标签导航 文章列表 分页 二.模型设计 根据功能分析,我们需要如下表 1.表和字段分析 文章分类表 文章表 文章评论表 推荐文章表 轮播图表 2. ...
- 观察者模式(Observer、Subject、ConcreteSubject、ConcreteObserver)(监护、订阅)
建立一种对象与对象之间的依赖关系,一个对象发生改变时将自动通知其他对象,其他对象将相应的作出反应. 在此发生改变的对象称之为观察目标(被观察者),而被通知的对象称为观察者,一个观察者目标可以对应多个观 ...
- SVN添加自动忽略文件.settings .project .classpath target等
eclipse svn提交忽略文件及文件夹,ignore设置无效.. 一.方法: 1. 将文件夹或文件从Eclipse中删除.记得要在Eclipse中删除,而不是Windows文件管理界面删除. 2. ...