题目:http://poj.org/problem?id=3585

很容易想出暴力。那么就先扫一遍。

然后得到了指定一个根后每个点的子树值。

怎么转化利用一下呢?要是能找出当前点的父亲的 “ 不含当前点的其他子树值 ” 就好了。

发现只需要把父亲的值减去 min ( 当前子树的值,该点与父亲间的边的值 ) 就行了!(因为当初这样加过)

需要注意一下的是叶节点。赋成INF或边的值都行。

特别需要注意的是第一次选的根节点在其余时候是叶节点的情况!!!!!

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int T,n,xnt,head[],rd[],x,y,z,yt;
const int INF=;
long long d[],ans;
struct Node{
int next,to;
long long w;
}edge[];
void add(int x,int y,int z)
{
edge[++xnt].next=head[x];
edge[xnt].to=y;
edge[xnt].w=z;
head[x]=xnt;
rd[x]++;
}
void dfs1(int k,int fa)
{
if(rd[k]==&&k!=yt)
{
d[k]=INF;
return;
}
for(int i=head[k];i;i=edge[i].next)
{
int v=edge[i].to;
if(v==fa)continue;
dfs1(v,k);
d[k]+=min(d[v],edge[i].w);
// printf("1 k=%d d=%lld\n",k,d[k]);
}
}
void dfs2(int k,int fa,int u)
{
long long r=d[fa]-min(d[k],edge[u].w);
if(rd[fa]==)r=edge[u].w;///////////////当根节点也是叶节点时!很特殊
if(rd[k]==)
{
d[k]=min(r,edge[u].w);
return;
}
d[k]+=min(r,edge[u].w);
// printf("2 k=%d d=%lld\n",k,d[k]);
for(int i=head[k];i;i=edge[i].next)
{
if(edge[i].to==fa)continue;
dfs2(edge[i].to,k,i);
}
}
int main()
{
scanf("%d",&T);
while(T--)
{
memset(head,,sizeof head);
memset(d,,sizeof d);
memset(rd,,sizeof rd);
xnt=;ans=-;///////
scanf("%d",&n);
for(int i=;i<n;i++)
{
scanf("%d%d%d",&x,&y,&z);
add(x,y,z);add(y,x,z);
}
yt=;
dfs1(,);
for(int i=head[];i;i=edge[i].next)
dfs2(edge[i].to,,i);
for(int i=;i<=n;i++)ans=max(ans,d[i]);
printf("%lld\n",ans);
}
return ;
}

POJ3585 Accumulation Degree(二次扫描与换根法)的更多相关文章

  1. 【POJ3585】Accumulation Degree 二次扫描与换根法

    简单来说,这是一道树形结构上的最大流问题. 朴素的解法是可以以每个节点为源点,单独进行一次dp,时间复杂度是\(O(n^2)\) 但是在朴素求解的过程中,相当于每次都求解了一次整棵树的信息,会做了不少 ...

  2. poj3585 树形dp 二次扫描,换根法模板题

    #include<iostream> #include<cstring> #include<cstdio> #include<vector> using ...

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

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

  4. poj 3585 Accumulation Degree(二次扫描和换根法)

    Accumulation Degree 大致题意:有一棵流量树,它的每一条边都有一个正流量,树上所有度数为一的节点都是出口,相应的树上每一个节点都有一个权值,它表示从这个节点向其他出口可以输送的最大总 ...

  5. $Poj3585\ Accumulation Degree$ 树形$DP/$二次扫描与换根法

    Poj Description 有一个树形的水系,由n-1条河道与n个交叉点组成.每条河道有一个容量,联结x与y的河道容量记为c(x,y),河道的单位时间水量不能超过它的容量.有一个结点是整个水系的发 ...

  6. 【51Nod1405】树上距离和 二次扫描与换根法

    题目大意:给定一棵 N 个点的边权均为 1 的树,依次输出每个点到其他各个点的距离和. 题解:首先任意选定一个节点为根节点,比如 1,第一遍 dfs 遍历树求出子树大小.树上前缀和.第二遍 dfs 遍 ...

  7. poj - 3585(二次扫描与换根法)

    周末牛客挂了个更难的,这个简单一些 #include<iostream> #include<cstring> #include<cstdio> #include&l ...

  8. [LuoguP1829]Crash的文明表格(二次扫描与换根+第二类斯特林数)

    Solution: ​ 由于 \[ x^m = \sum_{i=0}^m{~m~\choose i}{~x~\brace i}i! \] ​ 将所求的式子化成这样,挖掘其性质,考虑是否能从儿子转移(或 ...

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

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

随机推荐

  1. Generate PDF in Sourcing through concurrent request,在EBS java并发中调用指定am的方法

    package oracle.apps.pon.printing.cp; import java.io.InputStream; import java.io.FileOutputStream; im ...

  2. 无法使用BIPublisher开发报表

    我的机器是windows7,word版本问word 2010 32bit. 以前BIPublisher(安装的是BIPublisher 10.1.33版本)能正常使用,突然有一天再想使用他的时候,报以 ...

  3. 不能将Lnode * 类型的值分配到Lnode * 类型的实体

    typedef struct { int data; struct Lnode *next;}Lnode,*LinkList; 这个地方有点问题,因为结构体定义中出现了struct Lnode但 Ln ...

  4. @RunWith和 SpringJUnit4ClassRunner ---->junit4和Spring一起使用

    今天在看Spring的Demo的时候,看到了如此单元测试的写法 如下: @RunWIth(SpringJunit4ClassRunner.class) @ContextConfiguration(lo ...

  5. git and github问题集锦

    本人遇到的:

  6. 返回最小的k个数

    对于一个无序数组,数组中元素为互不相同的整数,请返回其中最小的k个数,顺序与原数组中元素顺序一致. 给定一个整数数组A及它的大小n,同时给定k,请返回其中最小的k个数. 测试样例: [1,2,4,3] ...

  7. 返回书签 GotoBookmark

    property Bookmark: TBookmark read GetBookmark write GotoBookmark; 直接给Bookmark属性赋值,还是 调用数据集GotoBookma ...

  8. IE 11 回车事件代码不起作用但是在chrom可以正常运行解决办法

    今天遇到这个问题,搞半天开始以为是代码写错了,后面拿到chrom上执行发现是正常的,就是这段代码 function EnterPress(){          if(event.keyCode == ...

  9. sql server的远程连接

    当一台服务器上的数据库需要用到另一台服务器上的数据库时,就需要远程连接 首先创建远程连接 exec sp_addlinkedserver linkname,'','SQLOLEDB',serverIP ...

  10. MyEclipse持续性开发教程:用JPA和Spring管理数据(五)

    MyEclipse 3.15 Style——在线购买低至75折!火爆开抢>> [MyEclipse最新版下载] 本教程介绍了MyEclipse中的一些基于JPA / Spring的功能.有 ...