题目: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——树上差分的更多相关文章

  1. 洛谷P3128 [USACO15DEC]最大流Max Flow(树上差分)

    题意 题目链接 Sol 树上差分模板题 发现自己傻傻的分不清边差分和点差分 边差分就是对边进行操作,我们在\(u, v\)除加上\(val\),同时在\(lca\)处减去\(2 * val\) 点差分 ...

  2. 洛谷 P3128 [ USACO15DEC ] 最大流Max Flow —— 树上差分

    题目:https://www.luogu.org/problemnew/show/P3128 倍增求 lca 也写错了活该第一次惨WA. 代码如下: #include<iostream> ...

  3. 洛谷 P3128 [USACO15DEC]最大流Max Flow-树上差分(点权/点覆盖)(模板题)

    因为徐州现场赛的G是树上差分+组合数学,但是比赛的时候没有写出来(自闭),背锅. 会差分数组但是不会树上差分,然后就学了一下. 看了一些东西之后,对树上差分写一点个人的理解: 首先要知道在树上,两点之 ...

  4. 洛谷P3128 [USACO15DEC]最大流Max Flow

    P3128 [USACO15DEC]最大流Max Flow 题目描述 Farmer John has installed a new system of N-1N−1 pipes to transpo ...

  5. 洛谷P3128 [USACO15DEC]最大流Max Flow [树链剖分]

    题目描述 Farmer John has installed a new system of  pipes to transport milk between the  stalls in his b ...

  6. 洛谷P3128 [USACO15DEC]最大流Max Flow [倍增LCA]

    题目描述 Farmer John has installed a new system of  pipes to transport milk between the  stalls in his b ...

  7. 洛谷P3128 [USACO15DEC]最大流Max Flow (树上差分)

    ###题目链接### 题目大意: 给你一棵树,k 次操作,每次操作中有 a  b 两点,这两点路上的所有点都被标记一次.问你 k 次操作之后,整棵树上的点中被标记的最大次数是多少. 分析: 1.由于数 ...

  8. P3128 [USACO15DEC]最大流Max Flow (树上差分)

    题目描述 Farmer John has installed a new system of N-1N−1 pipes to transport milk between the NN stalls ...

  9. 洛谷——P3128 [USACO15DEC]最大流Max Flow

    https://www.luogu.org/problem/show?pid=3128 题目描述 Farmer John has installed a new system of  pipes to ...

随机推荐

  1. centos7 安装 python3

    sudo yum -y groupinstall "Development tools" sudo yum -y install zlib-devel bzip2-devel op ...

  2. mongdb 使用聚合函数异常

    异常信息: Command execution failed:  Error [The 'cursor' option is required, except for aggregate with t ...

  3. vue 实现单选框

    参考:https://blog.csdn.net/qq_42221334/article/details/81630634 效果: vue: <template> <div> ...

  4. conan本地安装包

    在远程有的情况下,本地没有的情况下,执行命令 conan install package/版本号@usr/stable ,比如conan install opencv/3.4.3@seal/stabl ...

  5. Umount- Linux必学的60个命令

    1.作用 umount命令的作用是卸载一个文件系统,它的使用权限是超级用户或/etc/fstab中允许的使用者. 2.格式 unmount -a [-fFnrsvw] [-t vfstype] [-n ...

  6. [TJOI2017]城市 【树的直径+暴力+优化】

    Online Judge:Luogu P3761 Label:树的直径,暴力 题目描述 从加里敦大学城市规划专业毕业的小明来到了一个地区城市规划局工作.这个地区一共有n座城市,n-1条高速公路,保证了 ...

  7. Fiilter

    过滤器 过滤请求和响应 作用:        自动登录.        统一编码.        过滤关键字        .... Filter是一个接口 编写filter步骤: 1.编写一个类 a ...

  8. 关于 solusvm

    1.母鸡用 fdisk 划一个独立分区出来与操作系统分开(分区标志 8e, 即 lvm),专门做vps磁盘,并做一个网桥2.母鸡安装被控端.注意:安装之前先安装 epel-release 源,并upd ...

  9. Golang数据库操纵对IN语句的支持

    一: 在实际的工程项目中,SQL通常使用预编译的形式进行执行操纵,可以有效的防止SQL注入的风险,提高编码的规范性.golang中使用sqlx进行sql查询的时候,在使用in语句在一个集合中查询的时候 ...

  10. Java TimeUnit使用

    TimeUnit是java.util.concurrent包下面的一个类,表示给定单元粒度的时间段. 常用的颗粒度 TimeUnit.DAYS //天 TimeUnit.HOURS //小时 Time ...