[bzoj4390] [Usaco2015 dec]Max Flow

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[bzoj4390] [Usaco2015 dec]Max Flow相关的知识,希望对你有一定的参考价值。

  给点打个标记,表示从根到这个点的路径上经过的点都+1

  最后算一下子树内标记的个数。。

技术分享
 1 #include<cstdio>
 2 #include<iostream>
 3 #include<cstring>
 4 using namespace std;
 5 const int maxn=100233;
 6 struct zs{int too,pre;}e[maxn<<1];int tot,last[maxn];
 7 int add[maxn],bel[maxn],fa[maxn],sz[maxn],dep[maxn];
 8 int i,j,k,n,m,ans;
 9  
10  
11 int ra;char rx;
12 inline int read(){
13     rx=getchar(),ra=0;
14     while(rx<0||rx>9)rx=getchar();
15     while(rx>=0&&rx<=9)ra*=10,ra+=rx-48,rx=getchar();return ra;
16 }
17 void dfs(int x){
18     dep[x]=dep[fa[x]]+1,sz[x]=1;
19     for(int i=last[x];i;i=e[i].pre)if(e[i].too!=fa[x])
20         fa[e[i].too]=x,dfs(e[i].too),sz[x]+=sz[e[i].too];
21 }
22 void dfs2(int x,int chain){
23     bel[x]=chain;
24     int i,mx=0;
25     for(i=last[x];i;i=e[i].pre)if(e[i].too!=fa[x]&&sz[e[i].too]>sz[mx])mx=e[i].too;
26     if(!mx)return;
27     dfs2(mx,chain);
28     for(i=last[x];i;i=e[i].pre)if(e[i].too!=fa[x]&&e[i].too!=mx)dfs2(e[i].too,e[i].too);
29 }
30 inline int getlca(int a,int b){
31     while(bel[a]!=bel[b]){
32         if(dep[bel[a]]<dep[bel[b]])swap(a,b);
33         a=fa[bel[a]];
34     }
35     return dep[a]<dep[b]?a:b;
36 }
37 void dfs3(int x){
38     int sm=add[x];
39     for(int i=last[x];i;i=e[i].pre)if(e[i].too!=fa[x])dfs3(e[i].too),sm+=add[e[i].too];
40     if(sm>ans)ans=sm;
41     add[x]=sm;
42 }
43 inline void insert(int a,int b){
44     e[++tot].too=b,e[tot].pre=last[a],last[a]=tot,
45     e[++tot].too=a,e[tot].pre=last[b],last[b]=tot;
46 }
47  
48 int main(){
49     n=read(),m=read();
50     for(i=1;i<n;i++)insert(read(),read());
51     dfs(1),dfs2(1,1);
52     int lca,a,b;
53     while(m--)
54         a=read(),b=read(),lca=getlca(a,b),
55         add[a]++,add[b]++,add[lca]--,add[fa[lca]]--;
56     dfs3(1);
57     printf("%d\\n",ans);
58 }
59 
View Code

 

以上是关于[bzoj4390] [Usaco2015 dec]Max Flow的主要内容,如果未能解决你的问题,请参考以下文章

[bzoj4390] [Usaco2015 dec]Max Flow

bzoj4390: [Usaco2015 dec]Max Flow(LCA+树上差分)

USACO 2015 December Contest Max Flow (bzoj4390)

bzoj4397[Usaco2015 dec]Breed Counting*

bzoj4393[Usaco2015 Dec]Fruit Feast*

bzoj4396[Usaco2015 dec]High Card Wins*