当前位置: 首页 > news >正文

【树上点差分、LCA】Max Flow P

核心思路

[USACO15DEC] Max Flow P - 洛谷

sum[u]++,sum[v]++,sum[lca(u,v)]--,sum[fa[lca(u,v)]];

本质上就是,对树进行差分

自底向上进行统计处理

#include<bits/stdc++.h>
using namespace std;
int  n,m;
const int N = 200000+10;
vector<int> G[N] ;
int dep[N],fa[N],hson[N],sz[N],top[N],dfn[N],res[N];
//____________________________________分割线。 
void dfs1(int u,int p){//u当前访问到的,p父节点。fa[u] = p;sz[u] = 1;dep[u] = dep[p]+1;hson[u] = -1;for(int i = 0;i < G[u].size();i++){int v = G[u][i];if(v == p)continue;dfs1(v,u);sz[u]+=sz[v];if(hson[u] == -1|| sz[v] > sz[hson[u]]){hson[u] = v;}} }
int cnt;//记录是第几次访问 
void dfs2(int u,int p){if(u == 1)top[1] = 1;//先遍历重儿子 cnt++;dfn[u] = cnt; res[cnt] = u;if(hson[u] == -1)return;top[hson[u]] = top[u];dfs2(hson[u],u); for(int i = 0;i < G[u].size();i++){int v = G[u][i];if(v == p || hson[u] == v)continue;top[v] = v;dfs2(v,u);} 
}
int lca(int u,int v){if(top[u] == top[v])return dep[u]<dep[v] ? u : v;//那个深度小就取哪个。if(dep[top[u]]<dep[top[v]]) return lca(u,fa[top[v]]);else return lca(fa[top[u]],v);//因为他是要跳到top的父亲上所以要比较两个top的深度; 
}
int sum[114514];
int ans = 0;
void ges(int u,int f){for(int v:G[u]){if(v == f)continue;ges(v,u);sum[u]+=sum[v];}ans = max(sum[u],ans);
}
int main(){cin>>n>>m;for(int i = 1;i <= n-1;i++){int u,v;cin>>u>>v;G[u].push_back(v);G[v].push_back(u);} dfs1(1,0);dfs2(1,0);while(m--){int u,v;cin>>u>>v;int L = lca(u,v);sum[u]++,sum[v]++;sum[L]--,sum[fa[L]]--;}ges(1,0);cout<<ans<<endl;return 0;
}

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • linux的wps字体问题解决方法汇总
  • 鸿蒙(API 12 Beta3版)【HDR Vivid视频录制】 音视频编码
  • 三防平板满足多样化定制为工业领域打造硬件解决方案
  • 斜坡函数在PLC中的应用
  • 使用Adobe Photoshop CS5给图片加水印
  • windows中如何进入redis控制台?
  • Query @azure/openai with images?
  • 【无线通信发展史③】万有引力定律的推导前奏1.0,带你先了解离心力—向心力的知识点
  • sqlserver给整张表修改某一字段为uuid
  • GPT-4o:开启多模态AI识别新纪元
  • 那些年我们一起遇到过的奇技淫巧
  • docker部署zookeeper和kafka
  • 图论(二):图的度分析——度数bar图度数等级图度数直方图根据度数渲染节点颜色
  • 合并多行数据
  • 记录一个困扰两天的bug,vue3代码用vite打包运行出错的问题
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • Android Studio:GIT提交项目到远程仓库
  • bootstrap创建登录注册页面
  • CSS实用技巧干货
  • ES6核心特性
  • ES6简单总结(搭配简单的讲解和小案例)
  • HTML5新特性总结
  • JS 面试题总结
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • 创建一种深思熟虑的文化
  • 给github项目添加CI badge
  • 基于Android乐音识别(2)
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 来,膜拜下android roadmap,强大的执行力
  • 如何在GitHub上创建个人博客
  • 三栏布局总结
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • 云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • ​Redis 实现计数器和限速器的
  • # Maven错误Error executing Maven
  • #### go map 底层结构 ####
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • (php伪随机数生成)[GWCTF 2019]枯燥的抽奖
  • (七)Java对象在Hibernate持久化层的状态
  • (五)Python 垃圾回收机制
  • (一) springboot详细介绍
  • (一)RocketMQ初步认识
  • (转)Scala的“=”符号简介
  • .gitignore文件_Git:.gitignore
  • .Net core 6.0 升8.0
  • .NET Standard 的管理策略
  • .NET高级面试指南专题十一【 设计模式介绍,为什么要用设计模式】
  • .NET构架之我见
  • .vimrc php,修改home目录下的.vimrc文件,vim配置php高亮显示
  • @RequestMapping 的作用是什么?
  • @test注解_Spring 自定义注解你了解过吗?
  • [ 第一章] JavaScript 简史
  • [BZOJ3211]:花神游历各国(小清新线段树)
  • [C#]winform部署PaddleOCRV3推理模型