首页 > 其他分享 >acwing 287积蓄程度

acwing 287积蓄程度

时间:2023-02-27 00:23:50浏览次数:40  
标签:min int 积蓄 add hd go 287 dp acwing

 

 除了源点之外,树中所有度数为1

的节点都是入海口,可以吸收无限多的水,我们称之为汇点。

也就是说,水系中的水从源点出发,沿着每条河道,最终流向各个汇点。

问最大流量

 

   f[ x]  =min( f[y] ,z)

  

换根,考虑  g[x] 流向所有(包括x往上) 时的最大流量

 g[y]=f[y]+ min( z,  g[x]- min(z, f[y]) )

 

#include <iostream>
#include <cstring>
using namespace std;
 const int  N=2e5+30,M=2*N;
 
 int all,hd[N],w[M],nxt[M],go[M],n;
 int g[N],f[N],in[N];
 
 void add(int x,int y,int z){
 	go[++all]=y,nxt[all]=hd[x],hd[x]=all;
 	w[all]=z;
 }
 
 void dp(int x,int fa){
 	int y,z,i;
 	f[x]=0;
 	for(i=hd[x];i;i=nxt[i]){
 		y=go[i],z=w[i]; if(y==fa) continue;
 		dp(y,x);
 		if(in[y]<=1) f[x]+=z; 
 		else f[x]+=min(z,f[y]);
 	}
 }
 void dfs(int x,int fa){
 	int y,z,i;
 	
 	for(i=hd[x];i;i=nxt[i]){
 		y=go[i],z=w[i]; if(y==fa) continue;
 		
 		if(in[x]==1) g[y]=z+f[y];
 		else g[y]=f[y]+min(g[x]-min(f[y],z),z);
 		
 		dfs(y,x);
 	}
 }
 signed main(){
 	int i,tes;
 	cin>>tes;
 	 while(tes--){
 	 	cin>>n;
 	 	int x,y,z;
 	 	for(i=1;i<=n;i++) f[i]=g[i]=in[i]=hd[i]=0; 
 	 	all=0;
 	 	
 	 	for(i=1;i<n;i++)
 	 		cin>>x>>y>>z,add(x,y,z),add(y,x,z),
 	 		in[y]++,in[x]++;
 	 		
 	 		dp(1,-1);
 	 		g[1]=f[1];
		 	 dfs(1,-1);
	
		 	 int ans=0;
		 	 for(i=1;i<=n;i++) ans=max(ans,g[i]);
		 	 cout<<ans<<endl;
 	 }
 }
 
 
 

 

标签:min,int,积蓄,add,hd,go,287,dp,acwing
From: https://www.cnblogs.com/towboa/p/17158293.html

相关文章

  • AcWing 1497. 树的遍历
    【题目描述】一个二叉树,树中每个节点的权值互不相同。现在给出它的后序遍历和中序遍历,请你输出它的层序遍历。【输入格式】第一行包含整数N,表示二叉树的节点数。第二行包......
  • acwing 单调栈
    原题给定一个长度为N的整数数列,输出每个数左边第一个比它小的数,如果不存在则输出-1。输入格式第一行包含整数N,表示数列长度。第二行包含N个整数,表示整数数列。......
  • AcWing 第 92 场周赛 C题 4866. 最大数量 题解
    原题链接链表+并查集乱搞做法:思路首先可以发现,想要让度数尽量大,那我们应该构造成菊花图,即下图所示:对于每个需求,我们可以知道,如果之前他们没有连在一起,那我们一定得......
  • 2023.2.24AcWing蓝桥杯集训·每日一题
    今日复习的知识点为递归。递归对于笔者而言是个比较难以理解的知识点,后续会多进行递归题目的练习。AcWing1497.树的遍历题目描述一个二叉树,树中每个节点的权值互不相同......
  • 2023.2.25AcWing蓝桥杯集训·每日一题
    今日复习的知识点为并查集。AcWing1249.亲戚题目描述或许你并不知道,你的某个朋友是你的亲戚。他可能是你的曾祖父的外公的女婿的外甥女的表姐的孙子。如果能得到完整......
  • AtCoder Beginner Contest 287 A-F 题解
    比赛链接A-Majority先这样再那样最后这样,就是这样。点击查看代码#include<cstdio>#include<algorithm>#include<cstring>usingnamespacestd;intn,a;char......
  • 「AcWing学习记录」Trie
    Trie:高效地存储和查找字符串集合的数据结构。AcWing835.Trie字符串统计原题链接#include<iostream>#include<algorithm>usingnamespacestd;constintN=1e......
  • ACwing——我在哪?
    题目描述农夫约翰出门沿着马路散步,但是他现在发现自己可能迷路了!沿路有一排共N个农场。不幸的是农场并没有编号,这使得约翰难以分辨他在这条路上所处的位置。然而,每个......
  • 「AcWing学习记录」KMP
    AcWing831.KMP字符串原题链接1.暴力算法怎么做chars[N],p[M];for(inti=1;i+m-1<=n;i++){boolflag=true;for(intj=1;j<=m;j++)......
  • Acwing 97
    Acwing97.约数之和题意求\(a^b\)的约数之和思路假设不考虑次方,只求a的约数之和,要怎么求呢?当遇到一个数b能被a整除时,假设当前答案为\(ans\),则应再加上\(ans*b\)。a......