首页 > 其他分享 >P3128 [USACO15DEC] Max Flow P

P3128 [USACO15DEC] Max Flow P

时间:2024-07-21 20:40:10浏览次数:7  
标签:int Max Flow tree fa P3128 dfs -- include

链接

https://www.luogu.com.cn/problem/P3128

题目

分析

LCA+树上差分。思路就是先定义1为根节点,然后进行dfs1的预处理,配置好LCA的环境。然后条件思路就是端点++,lca--,lca的父亲(fa[lca][0])--。最后再做树上前缀和。就是从根节点开始跑dfs,每个节点的值等于所有子树的值的和。进行一遍dfs即可。

代码

#define _CRT_SECURE_NO_WARNINGS 
#include<iostream>
#include<vector>
#include<algorithm>
#include<math.h>
#include<sstream>
#include<string>
#include<string.h>
#include<iomanip>
#include<stdlib.h>
#include<map>
#include<queue>
#include<limits.h>
#include<climits>
#include<fstream>
#include<stack>
#define IOS ios::sync_with_stdio(false), cin.tie(0) ,cout.tie(0)
using namespace std;

#define int long long 
const int N = 5e4 + 10;
struct Edge { int to, next; }edge[2*N];
int head[N*2];
int cnt;
int ans = 0;
int deep[N], fa[N][20];
int tree[N];
void init(int n)
{
	for (int i = 1; i <= n; i++)edge[i].to = edge[i].next = head[i] = -1;
}
void addedge(int u, int v)
{
	edge[cnt].next = head[u], edge[cnt].to = v; head[u] = cnt++;
}
void dfs1(int u, int father)
{
	deep[u] = deep[father] + 1;
	fa[u][0] = father;
	for (int i = 1; (1 << i) <= deep[u]; i++)
		fa[u][i] = fa[fa[u][i - 1]][i - 1];
	for (int x = head[u]; x != -1; x = edge[x].next)
	{
		if (edge[x].to != father)
			dfs1(edge[x].to, u);
	}
}
int LCA(int x, int y)
{
	if (deep[x] < deep[y])swap(x, y);
	for (int i = 19; i >= 0; i--)
		if (deep[x] - (1 << i) >= deep[y])
			x = fa[x][i];
	if (x == y)return x;
	for (int i = 19; i >= 0; i--)
		if (fa[x][i] != fa[y][i])
			x = fa[x][i], y = fa[y][i];
	return fa[x][0];
}
void dfs(int x, int fa)
{
	for (int i = head[x]; i != -1; i = edge[i].next)
	{
		int xnow = edge[i].to;
		if (xnow == fa)continue;
		dfs(xnow, x);
		tree[x] += tree[xnow];
	}
	ans = max(ans, tree[x]);
}
signed main()
{
	IOS;
	int n, k;
	cin >> n >> k;
	init(n);
	for (int i = 1; i < n; i++)
	{
		int u, v; cin >> u >> v;
		addedge(u, v); addedge(v, u);
	}
	dfs1(1, 0);
	for (int i = 1; i <= k; i++)
	{
		int x, y; cin >> x >> y;
		int root_pub = LCA(x, y);
		int root_fa = fa[root_pub][0];
		tree[x]++, tree[y]++, tree[root_fa]--, tree[root_pub]--;
	}
	dfs(1, 0);
	cout << ans;
	return 0;
}

标签:int,Max,Flow,tree,fa,P3128,dfs,--,include
From: https://www.cnblogs.com/zzzsacmblog/p/18314837

相关文章

  • tensorflowjs_converter 实用程序向导致错误的变量名称添加后缀
    我正在尝试使用tensorflowjs_converter将我在python中训练的模型(使用tensorflow)转换为JSON层格式,以便我可以在网络上运行它。我安装了最新版本,并转换了测试模型。对于这个模型,它按预期提供了model.json和.bin文件,但是当我在网络上运行它时,我遇到了错误:Unc......
  • C. To Become Max
    链接https://codeforces.com/problemset/problem/1856/C题目思路卡了好久的题目,昨晚突然就做出来了。整体思路就是dp+二分。我们知道这个序列长度的最大值是对任意i∈[1,n],取a[i]+i-1的最大值;最小值就是max(a[i])(i∈[1,n])。然后再遍历每个点判断是否有一个点能到达那个高......
  • 如何实现 Grad-CAM 在 TensorFlow ResNet152V2 上查看激活图/热图以进行图像分类
    您好,我正在使用ResNet152V2做一个关于TensorFlow图像分类的小项目。我编写了一个Train-Predict.py脚本,它能够训练trained_weights.hdf5文件以成功预测自闭症和非自闭症人士的图像。此处。是脚本:#ImportLibrariesimportosimportnumpyasnp......
  • 提升效率的秘密武器:FlowUs息流,一站式平台引领团队协作新趋势! 数字革新浪潮:FlowUs息流
    FlowUs息流,作为新一代的知识管理与协作平台,正在重新定义个人和团队处理数字信息的方式。它以云端笔记为基础,融合了在线文档、知识库、文件夹等多形态功能,为用户提供了一个全面、集成的一站式工作中心。云端笔记:随时随地的记录与访问FlowUs的云端笔记功能使用户能够在任何时间......
  • 如何使用FlowUs快速构建专业领域知识网络是一个系统化的过程,旨在整合和组织一个特定领
     在这个信息爆炸的时代,快速构建知识网络就像是在浩瀚的知识海洋中搭建一座灯塔,指引我们前行的方向。它不仅帮助我们系统化地整理和理解复杂的信息,还能让我们在专业领域内更快速地成长和进步。当你面对一个全新的项目或挑战时,拥有一个完善的知识网络就像是拥有了一个强大的后......
  • NMS(non maximum suppression)非极大值抑制
    参考学习:算法精讲-预测阶段后处理-NMS非极大值抑制_哔哩哔哩_bilibili以YOLOv1的模型来讲,预测阶段后处理就是把每个boundingbox中的每个种类的值算出全概率,再对比boundingbox中同种类物品,先设定一个阈值,把boundingbox中同种类全概率低于阈值的算为0,再进行一次降序排序,通过遍历......
  • 【Flowable | 第三篇】flowable工作流使用任务监听器、执行监听器
    文章目录4.flowable工作流使用任务监听器、执行监听器4.1任务监听器4.2执行监听器4.2配置任务/执行监听器4.2.1新增任务监听器4.2.2新增执行监听器4.2.2任务节点配置任务/执行监听器(1)选择类的类型(2)使用表达式类型(3)使用委托表达式4.3测试4.4小结4.flowable工作流使......
  • MaxKB添加本地ollama大模型遇到API域名无效的问题
    MaxKB添加本地ollama大模型遇到API域名无效的问题前期的安装过程下载ollama,直接安装添加环境变量,使得下载模型到指定文件夹docker部署MaxKB打开添加模型API域名无效解决办法添加环境变量给ollama在“系统变量”或“用户变量”中点击“新建…”。输入变量名OLLAMA_......
  • MaxKB添加本地ollama大模型遇到API域名无效的问题
    MaxKB添加本地ollama大模型遇到API域名无效的问题前期的安装过程下载ollama,直接安装添加环境变量,使得下载模型到指定文件夹docker部署MaxKB打开添加模型API域名无效解决办法添加环境变量给ollama在“系统变量”或“用户变量”中点击“新建…”。输入变量名OLLAMA_......
  • MaxKB添加本地ollama大模型遇到API域名无效的问题
    MaxKB添加本地ollama大模型遇到API域名无效的问题前期的安装过程下载ollama,直接安装添加环境变量,使得下载模型到指定文件夹docker部署MaxKB打开添加模型API域名无效解决办法添加环境变量给ollama在“系统变量”或“用户变量”中点击“新建…”。输入变量名OLLAMA_......