传送门

换根dp板子题(板子型选手

题意:

  一棵树确定源点和汇点找到最大的流量(拿出一整套最大瘤板子orz

const int maxn=2e5+;
int head[maxn],tot;
struct node
{
int nt,to;long long w;
}q[*maxn];
long long dp[maxn];int cnt[maxn];
void insert(int u,int v,long long w)
{
q[tot].nt=head[u];q[tot].w=w;q[tot].to=v;head[u]=tot++;
q[tot].nt=head[v];q[tot].w=w;q[tot].to=u;head[v]=tot++;
}
long long ans;
void dfs(int u,int fa)
{
//cout<<u<<endl;
for(int i=head[u];i!=-;i=q[i].nt){
int v=q[i].to;long long w=q[i].w;
if(v==fa) continue;
dfs(v,u);
if(cnt[v]==)
dp[u]+=w;
else
dp[u]+=min(w,dp[v]);
//cout<<u<<" "<<dp[u]<<endl;
}
}
void dfs1(int u,int fa)
{
//cout<<u<<" "<<dp[u]<<endl;
ans=max(ans,dp[u]);
for(int i=head[u];i!=-;i=q[i].nt){
int v=q[i].to;long long w=q[i].w;
if(v==fa) continue;
dp[v]+=min(w,dp[u]-min(dp[v],w));
dfs1(v,u);
}
}
int main()
{
int t;scanf("%d",&t);
while(t--){
int n;scanf("%d",&n);ans=;
for(int i=;i<=n;i++) head[i]=-,cnt[i]=,dp[i]=;tot=;
for(int i=;i<n;i++){
int t1,t2;long long t3;scanf("%d%d%lld",&t1,&t2,&t3);
insert(t1,t2,t3);cnt[t1]++;cnt[t2]++;
}
dfs(,);
dfs1(,);
cout<<ans<<endl;
}
}

poj3585 Accumulation Degree(换根dp)的更多相关文章

  1. POJ3585:Accumulation Degree(换根树形dp)

    Accumulation Degree Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 3425   Accepted: 85 ...

  2. 题解 poj3585 Accumulation Degree (树形dp)(二次扫描和换根法)

    写一篇题解,以纪念调了一个小时的经历(就是因为边的数组没有乘2 phhhh QAQ) 题目 题目大意:找一个点使得从这个点出发作为源点,流出的流量最大,输出这个最大的流量. 以这道题来介绍二次扫描和换 ...

  3. poj3585 Accumulation Degree【树形DP】【最大流】

    Accumulation Degree Time Limit: 5000MS   Memory Limit: 65536K Total Submissions:3151   Accepted: 783 ...

  4. POJ3585 Accumulation Degree 【树形dp】

    题目链接 POJ3585 题解 -二次扫描与换根法- 对于这样一个无根树的树形dp 我们先任选一根进行一次树形dp 然后再扫一遍通过计算得出每个点为根时的答案 #include<iostream ...

  5. POJ 3585 Accumulation Degree【换根DP】

    传送门:http://poj.org/problem?id=3585 题意:给定一张无根图,给定每条边的容量,随便取一点使得从这个点出发作为源点,发出的流量最大,并且输出这个最大的流量. 思路:最近开 ...

  6. [算法学习] 换根dp

    换根dp 一般来说,我们做题的树都是默认 \(1\) 为根的.但是有些题目需要计算以每个节点为根时的内容. 朴素的暴力:以每个点 \(u\) 作为 \(root\) 暴力dfs下去,复杂度\(O(n^ ...

  7. [BZOJ4379][POI2015]Modernizacja autostrady[树的直径+换根dp]

    题意 给定一棵 \(n\) 个节点的树,可以断掉一条边再连接任意两个点,询问新构成的树的直径的最小和最大值. \(n\leq 5\times 10^5\) . 分析 记断掉一条边之后两棵树的直径为 \ ...

  8. 2018.10.15 NOIP训练 水流成河(换根dp)

    传送门 换根dp入门题. 貌似李煜东的书上讲过? 不记得了. 先推出以1为根时的答案. 然后考虑向儿子转移. 我们记f[p]f[p]f[p]表示原树中以ppp为根的子树的答案. g[p]g[p]g[p ...

  9. 换根DP+树的直径【洛谷P3761】 [TJOI2017]城市

    P3761 [TJOI2017]城市 题目描述 从加里敦大学城市规划专业毕业的小明来到了一个地区城市规划局工作.这个地区一共有ri座城市,<-1条高速公路,保证了任意两运城市之间都可以通过高速公 ...

随机推荐

  1. 左侧带三角的Card css支持hover阴影

    <div class="inputReportIndex"> <div class="inner"> <div class=&qu ...

  2. .NET的资源并不限于.resx文件

    为了构建一个轻量级的资源管理框架以满足简单的本地化(Localization)的需求,我试图直接对现有的Resource编程模型进行扩展.虽然最终没能满足我们的需求,但是这两天也算对.NET如何进行资 ...

  3. jQuery常用事件,each循环,引用当前时间

    jQuery常用事件,each循环,引用当前时间 1.常用事件 click(function(){...}) #点击时触发hover(function(){...}) #鼠标移到时就触发blur(fu ...

  4. Linux Ubuntu 开发环境配置 ——最具生产力工具一览

    Why Linux and Why exactly Ubuntu 首先这里就不做Mac,Linux,Windows三者之争了.只从个人角度分析下: Mac 不差钱(其实Mac作为超级本性价还行),不喜 ...

  5. Django-rest-framework源码分析(三)

    APIView(二) 在APIView执行dispatch()方法的时候,它不仅做了分发函数的功能,还进行了一系列的校验. Django的全局校验一般写在中间件中,但是rest_framework于D ...

  6. effective-java学习笔记---使用限定通配符来增加 API 的灵活性31

    在你的 API 中使用通配符类型,虽然棘手,但使得 API 更加灵活. 如果编写一个将被广泛使用的类库,正确使用通配符类型应该被认为是强制性的. 记住基本规则: producer-extends, c ...

  7. 最便捷的神经网络可视化工具之一--Flashtorch

    前言 几周前,我在AnitaB.org组织的Hopperx1 London上发表了演讲作为伦敦科技周的一部分. 在演讲结束后,我收到了热烈的反馈,所以我决定写一个稍微长一点的演讲版本来介绍FlashT ...

  8. JAVA——桌球游戏(动画)

    跟着视频敲得 ,虽然不是自己的思路 ,不过对代码多了一点了解:涉及到继承类 主函数:创建一个BallGame对象,调用一个launchFrame函数 : launchFrame函数:严格来说是方法 , ...

  9. Web安全认证

    一.HTTP Basic Auth 每次请求 API 时都提供用户的 username 和 password. Basic Auth 是配合 RESTful API 使用的最简单的认证方式,只需提供用 ...

  10. 数据分析_numpy_基础2

    数据分析_numpy_基础2 sqrt 开方 arr = np.arange(10) arr # array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) np.sqrt(arr) ...