}voiddfs(intu)//递归求得u子树中的最大与次大 0最大 1次大{for(inti=g[u];i>0;i=e[i].next) {intv=e[i].v; dfs(v);intw=e[i].w;inttemp= dp[v][0]+w;if(temp>=dp[u][0]) { dp[u][1]=dp[u][0]; dp[u][0]=temp; }elseif(temp>dp[u][1]) dp[u][1]=temp;...
HDU 2196-Computer(树形dp) 题意: 给出电脑网络连接树,求每个节点的为起点的最长距离 分析: 这道题开始状态想不出来,放了一段时间,后来注意到例题上有这道题,每个节点的最长距离可由父节点的最长距离,次长距离,和子节点的最长距离(三者取最大)决定。先用一个dfs求出各节点由各子树确定的最长距离,次长距离,...
int n,longest[N],f[N],g[N],dp[N]; //longest[]用来记录当前节点的最远路径所对应的分支编号(因为是邻接表存储的,对于当前节点的判重只要记录下分支编号就行了) //f[]是当前节点往子树方向所能走过的最远距离,g[]是往子树方向次远距离,dp[]是通过父节点能走过的最远距离 vector<int> son[N],w[...
intn,tot,head[maxn],dp[maxn][3]; voidinit() { tot=0; memset(head,-1,sizeof(head)); } structEdge{ intto,cost,next; }edge[maxn*2]; voidaddedge(intu,intv,intcost) { ++tot; edge[tot].to=v,edge[tot].cost=cost,edge[tot].next=head[u]; head[u]=tot; } voiddfs1(intu...
HDU2196 Computer(树形DP) Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 32795 Accepted Submission(s): 4689 Problem Description A school bought the first computer some time ago(so this computer's id is 1). During the recent years the...
HDU 2196 Computer(树的直径) 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2196 题意是n台电脑,n-1条边,输出第距离i台电脑最远的距离是多少。 思路就是不管那一台电脑,距离它最远距离的一定是树的直径的两个端点的其中一个,所以我们只需要求出树的直径的两个端点,然后再求出这两个端点到每个...
#include<bits/stdc++.h>//记忆化搜索#defineMAXN 10010usingnamespacestd;typedefpair<int,int>P;vector<P>a[MAXN];map<P,int>dp;voidInit(intn){dp.clear();for(inti=1;i<=n;i++)a[i].clear();}voidadd_edge(intu,intv,intlen){a[u].push_back(make_pair(v,len));a[v].push_back(...
作者:Wa哇一天的博客 链接:HDU-2196-Computer_牛客博客 来源:牛客网 电脑 时间限制:1000/1000 MS(Java /其他)内存限制:32768/32768 K(Java /其他)总提交数量:37195接受提交数量:6420 一所学校在一段时间前购买了第一台计算机(因此该计算机的ID为1)。近年来,学校购买了N-1台新计算机。每台新计算机都连接到较...
hdu2196-树形dp 觉得第二组数据没什么用,但是后来一想再求第三组数据的时候需要用到 还是同一幅图我们在计算dp【u】【2】时,它是从父节点p来的,这是我们就要分情况讨论了首先dp【p】【0】如果不是往u节点方向的话...题目网址:http://hdu.hustoj.com/showproblem.php?pid=2196题目大意:给你一个树形结构...
hdu 2196 computerhdu 2196 题意 给出一棵树,求出树上每一个点在树上走一条简单路径所能走的最长距离。 解法 说起来,这是我今天1A的第一题 我们设 (up[i]) 表示从这个点向上走到某个点又向下走的最长距离 设(down[i][0]) 表示从这个点出发向他的子树所能走到的最大距离, (down[i][1]) 表示...