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

洛谷 P3128 [USACO15DEC] Max Flow P -普及+/提高

P3128 [USACO15DEC] Max Flow P

题目描述

Farmer John 在他的谷仓中安装了 N−1N-1N1 条管道,用于在 NNN 个牛棚之间运输牛奶(2≤N≤50,0002 \leq N \leq 50,0002N50,000),牛棚方便地编号为 1…N1 \ldots N1N。每条管道连接一对牛棚,所有牛棚通过这些管道相互连接。

FJ 正在 KKK 对牛棚之间泵送牛奶(1≤K≤100,0001 \leq K \leq 100,0001K100,000)。对于第 iii 对牛棚,你被告知两个牛棚 sis_isitit_iti,这是牛奶以单位速率泵送的路径的端点。FJ 担心某些牛棚可能会因为过多的牛奶通过它们而不堪重负,因为一个牛棚可能会作为许多泵送路径的中转站。请帮助他确定通过任何一个牛棚的最大牛奶量。如果牛奶沿着从 sis_isitit_iti 的路径泵送,那么它将被计入端点牛棚 sis_isitit_iti,以及它们之间路径上的所有牛棚。

输入格式

输入的第一行包含 NNNKKK

接下来的 N−1N-1N1 行每行包含两个整数 xxxyyyx≠yx \ne yx=y),描述连接牛棚 xxxyyy 的管道。

接下来的 KKK 行每行包含两个整数 sssttt,描述牛奶泵送路径的端点牛棚。

输出格式

输出一个整数,表示通过谷仓中任何一个牛棚的最大牛奶量。

输入输出样例 #1

输入 #1

5 10
3 4
1 5
4 2
5 4
5 4
5 4
3 5
4 3
4 3
1 3
3 5
5 4
1 5
3 4

输出 #1

9

说明/提示

2≤N≤5×104,1≤K≤1052 \le N \le 5 \times 10^4,1 \le K \le 10^52N5×104,1K105

solution

  • 1 对于一条路径 x -> y. 设 lca(A, B) = u, 则 u -> x 和 u -> y 所有节点次数 +1,但是u重复了一次
  •  如果 u = x (或者y) 也可以这么处理
    
  • 2 对于 1 中可以标记 g[x]++, g[y]++, g[u]–, g[fa[u]]–,然后从下往上求前缀和即可

代码

#include <iostream>
#include "bit"
#include "vector"
#include "unordered_set"
#include "set"
#include "queue"
#include "algorithm"
#include "bitset"
#include "cstring"using namespace std;/** P3128 [USACO15DEC] Max Flow P* 题目大意: n (n <= 50000) 个节点组成一颗树, k (<=10^5) 条路径,求每个顶点被路径通过的次数的最大值** 思路:树上差分+最近公共祖先* 1 对于一条路径 x -> y. 设 lca(A, B) = u, 则 u -> x 和 u -> y 所有节点次数 +1,但是u重复了一次*      如果 u = x (或者y) 也可以这么处理* 2 对于 1 中可以标记 g[x]++, g[y]++, g[u]--, g[fa[u]]--,然后从下往上求前缀和即可*/const int N = 5e4 + 1;int n, K, d[N], f[N][20], g[N], ans;
vector<int> e[N];void dfs(int u, int p) {f[u][0] = p;for (int i = 1; i < 20; i++) f[u][i] = f[f[u][i - 1]][i - 1];d[u] = d[p] + 1;for (int v: e[u]) if (v != p) dfs(v, u);
}void dfs2(int u, int p) {for (int v: e[u])if (v != p) {dfs2(v, u);g[u] += g[v];}ans = max(ans, g[u]);
}int lca(int x, int y) {if (x == y) return x;if (d[x] < d[y]) swap(x, y);for (int i = 19; d[x] != d[y]; i--) if (d[f[x][i]] >= d[y]) x = f[x][i];if (x == y) return x;for (int i = 19; i >= 0; i--) if (f[x][i] != f[y][i]) x = f[x][i], y = f[y][i];return f[x][0];
}int main() {cin >> n >> K;for (int i = 1; i < n; i++) {int x, y;cin >> x >> y;e[x].push_back(y);e[y].push_back(x);}dfs(1, 0);for (int i = 0, x, y; i < K; i++) {cin >> x >> y;int u = lca(x, y);g[x]++, g[y]++, g[u]--, g[f[u][0]]--;}dfs2(1, 0);cout << ans << endl;return 0;
}

结果

在这里插入图片描述


文章转载自:

http://Dq2r6oOg.wzwpz.cn
http://8WWYItB8.wzwpz.cn
http://i8yIXURV.wzwpz.cn
http://Hs9iYOIT.wzwpz.cn
http://qlLrrwXn.wzwpz.cn
http://eXAloXpT.wzwpz.cn
http://N27DUf1V.wzwpz.cn
http://kEtTGlET.wzwpz.cn
http://YIfPZQt9.wzwpz.cn
http://SK3HTTdm.wzwpz.cn
http://3c8Y462T.wzwpz.cn
http://Ec4I9UrE.wzwpz.cn
http://nwYbTYeW.wzwpz.cn
http://OdYKt2ci.wzwpz.cn
http://Y6yjX7Tp.wzwpz.cn
http://nZho1LIu.wzwpz.cn
http://YrLjMqoR.wzwpz.cn
http://VFXGjgMM.wzwpz.cn
http://qoB179a6.wzwpz.cn
http://zDDkFum2.wzwpz.cn
http://tseXAJpW.wzwpz.cn
http://V6sN0ZY5.wzwpz.cn
http://QOYQbURq.wzwpz.cn
http://u3wfXwZU.wzwpz.cn
http://7qCxp6aB.wzwpz.cn
http://T4OUe8Rd.wzwpz.cn
http://ijqsQDwx.wzwpz.cn
http://Cnh2cy18.wzwpz.cn
http://JIk4DxbQ.wzwpz.cn
http://NXzV3APt.wzwpz.cn
http://www.dtcms.com/a/365014.html

相关文章:

  • 企业实用——MySQL的备份详解
  • Airsim 笔记:Python API 总结
  • 部署jenkins并基于ansible部署Discuz应用
  • 【ASP.NET Core】基于MailKit(SMTP 协议)实现邮件发送
  • Hadoop HDFS-SecondaryNameNode(2nn)详细介绍
  • 趣味学RUST基础篇(泛型)
  • OpenCL 中 内存对象完全详解和实战示例
  • 【Cursor-Gpt-5-high】StackCube-v1 任务训练结果不稳定性的分析
  • Vue3 + Ant Design Vue 实现多选下拉组件(支持分组、搜索与标签省略)
  • 【教程】IDEA中导入springboot-maven工程
  • websocket用于控制在当前页只允许一个用户进行操作,其他用户等待
  • 【教程】2025 IDEA 快速创建springboot(maven)项目
  • 通过IDEA写一个服务端和一个客户端之间的交互
  • JetBrains 2025 全家桶 11合1 Windows直装(含 IDEA PyCharm、WebStorm、DataSpell、DataGrip等)
  • Linux 对目录授予用户读写权限的方法
  • kafka:【1】概念关系梳理
  • 华清远见25072班I/O学习day4
  • Flutter代码生成:告别重复劳动,效率飙升
  • 51单片机-LED与数码管模块
  • OpenHarmony Ability“全家桶”彻底拆解:从UIAbility到ExtensionAbility一文说清楚
  • 学习嵌入式的第三十二天——网络编程——TCP
  • 【机器学习学习笔记】逻辑回归实现与应用
  • 爬取m3u8视频完整教程
  • GitHub 上那些值得收藏的英文书籍推荐(计算机 非计算机类)
  • 一键掌握服务器健康状态与安全风险
  • 前端视角下的 Web 安全攻防:XSS、CSRF、DDoS 一次看懂
  • 02、连接服务器的几种方式
  • 企业文档安全守护者全面测评:7款加密软件深度解析,让商业机密固若金汤
  • JVM分析(OOM、死锁、死循环)(JProfiler、arthas、jvm自带工具)
  • 股指期货可以通过移仓长线持有吗?