[Luogu 3128] USACO15DEC Max Flow

<题目链接>


最近跟 LCA 干上了…

树剖好啊,我再也不想写倍增了。

以及似乎成功转成了空格选手 qwq。

对于每两个点 S and T,求一下 LCA 顺便树上差分,最后求差分数组的前缀和并找出最大值输出就行了。

(PS:最近考前训练不开 C++11,所以如果看见我写了奇怪的 define 请自动无视QAQ!)

#include <algorithm>
#include <cstdio> #define nullptr NULL const int MAXN = 50010; int n, m; namespace HLD
{
int num, qwq[MAXN];
struct Node
{
int depth, father, son, top, size, DFN;
}s[MAXN];
class Graph
{
private:
struct Edge
{
int to;
Edge *next;
Edge(int to, Edge* next): to(to), next(next) {}
~Edge(void)
{
if(next != nullptr)
delete next;
}
}*head[MAXN];
void AddEdges(int u, int v)
{
head[u] = new Edge(v, head[u]);
head[v] = new Edge(u, head[v]);
}
void DFS1(int u, int k)
{
s[u].depth = k;
s[u].size = 1;
int v;
for(Edge *i = head[u]; i != nullptr; i = i -> next)
if(!s[v = i -> to].size)
{
DFS1(v, k + 1);
s[u].size += s[v].size;
s[v].father = u;
if(s[v].size > s[s[u].son].size)
s[u].son = v;
}
}
void DFS2(int u, int top)
{
s[u].top = top;
s[u].DFN = ++num;
if(s[u].son)
DFS2(s[u].son, top);
int v;
for(Edge *i = head[u]; i != nullptr; i = i -> next)
if(!s[v = i -> to].top)
DFS2(v, v);
}
void Modify(int x, int y)
{
++qwq[s[x].DFN];
--qwq[s[y].DFN + 1];
}
public:
Graph(int n)
{
std :: fill(head + 1, head + n + 1, (Edge*)nullptr);
for(int i = 1, x, y; i < n; ++i)
{
scanf("%d %d", &x, &y);
AddEdges(x, y);
}
DFS1(1, 1);
DFS2(1, 1);
}
~Graph(void)
{
for(int i = 1; i <= n; ++i)
delete head[i];
}
void Run(int x, int y)
{
int a, b;
while((a = s[x].top) ^ (b = s[y].top))
if(s[a].depth > s[b].depth)
{
Modify(a, x);
x = s[a].father;
}
else
{
Modify(b, y);
y = s[b].father;
}
if(s[x].depth < s[y].depth)
Modify(x, y);
else
Modify(y, x);
}
int Answer(void)
{
int ans = qwq[1];
for(int i = 2; i <= n; ++i)
ans = std :: max(ans, qwq[i] += qwq[i-1]);
return ans;
}
}*G;
} int main(void)
{
scanf("%d %d", &n, &m);
HLD :: G = new HLD :: Graph(n);
for(int i = 1, x, y; i <= m; ++i)
{
scanf("%d %d", &x, &y);
HLD :: G -> Run(x, y);
}
printf("%d\n", HLD :: G -> Answer());
return 0;
}

谢谢阅读。

[Luogu 3128] USACO15DEC Max Flow的更多相关文章

  1. [luogu P3128][USACO15DEC]Max Flow [LCA][树上差分]

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

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

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

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

    P3128 [USACO15DEC]最大流Max Flow 题目描述 Farmer John has installed a new system of  pipes to transport mil ...

  4. luoguP3128 [USACO15DEC]最大流Max Flow 题解(树上差分)

    链接一下题目:luoguP3128 [USACO15DEC]最大流Max Flow(树上差分板子题) 如果没有学过树上差分,抠这里(其实很简单的,真的):树上差分总结 学了树上差分,这道题就极其显然了 ...

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

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

  6. USACO Max Flow

    洛谷 P3128 [USACO15DEC]最大流Max Flow 洛谷传送门 JDOJ 3027: USACO 2015 Dec Platinum 1.Max Flow JDOJ传送门 Descrip ...

  7. BZOJ 4390: [Usaco2015 dec]Max Flow

    4390: [Usaco2015 dec]Max Flow Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 177  Solved: 113[Submi ...

  8. HackerRank "Training the army" - Max Flow

    First problem to learn Max Flow. Ford-Fulkerson is a group of algorithms - Dinic is one of it.It is ...

  9. Max Flow

    Max Flow 题目描述 Farmer John has installed a new system of N−1 pipes to transport milk between the N st ...

随机推荐

  1. “吃神么,买神么”的第二个Sprint计划

    “吃神么,买神么”的第二个Sprint计划   一.现状   前台布局设计完成一个主页,可以让浏览者了解我们网站的功能,这是第一个阶段的Spring完成的事情.由于没有实际的功能体现,所以第二阶段开始 ...

  2. Mac下不能安装第三方下载软件

    1.安装成功后,启动时如提示“某某文件已损坏,打不开”,请将电脑的“系统偏好设置--安全性与隐私--通用”的允许从以下位置下载的应用程序设置为“任何来源”. 2.如果您的电脑上没有“任何来源”的选项, ...

  3. 初识nginx——配置解析篇

    一.nginx的介绍 nginx是由俄罗斯人开发的一款高性能的http和反向代理服务器,也可以用来作为邮件代理.相比较于其他的服务器,具有占用内存少,稳定性高等优势 二.nginx的配置 nginx的 ...

  4. [2017BUAA软工]个人项目心得体会:数独

    心得体会 回顾此次个人项目,感受比较复杂,最明显的一点是--累!代码编写.单元测试.代码覆盖.性能优化,环环相扣,有种从作业发布开始就一直在赶DDL的感觉,但是很充实,也学习到和体验了很多东西.最令人 ...

  5. 微信小程序 功能函数 密码验证*

    //登录输入密码 userPasswordInput: function (e) { var that = this; this.setData({ userPassword: e.detail.va ...

  6. startActivityForResult()的用法(超好用啊)

    最近做的一个小东西遇到这样的情况,我从一个页面MainActivity修改一些内容,需要跳转到一个新的EditActivity去做修改操作,修改完成后就回到之前的MainActivity,因为信息被修 ...

  7. CSS3 Selectors All In One

    CSS3 Selectors All In One https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Selectors https://www ...

  8. javascript中对象访问自身属性的方式

    在javascript中,通过对象的方法访问对象自身属性时,必须采用this.fieldName的方式. 原因是javascript中Function是无状态的,访问对象的属性时,必须指定当前的上下文 ...

  9. 触发Full GC执行的情况 以及其它补充信息

    除直接调用System.gc外,触发Full GC执行的情况有如下四种.1. 旧生代空间不足旧生代空间只有在新生代对象转入及创建为大对象.大数组时才会出现不足的现象,当执行Full GC后空间仍然不足 ...

  10. Make a Crystal UVA - 11014 (容斥定理)

    题意:给定一个NxNxN的正方体,求出最多能选几个整数点,使得任意两点PQ不会使PQO共线. 思路:利用容斥原理,设f(k)为点(x, y, z)三点都为k的倍数的点的个数(要扣掉一个原点O),那么所 ...