HDU 2196 树形dp
来源:互联网 发布:java web项目源码 编辑:程序博客网 时间:2024/05/17 07:57
题目的大意就是要你求出每个节点到叶子节点的最远距离
这道题两次搜索,求出最大值,记录一个最大值一个次大值,便于更新
#include<stdio.h>#include<algorithm>#include<iostream>#include<string.h>using namespace std;#define MAXN 10008typedef struct{ int to,next,len;} E;E edge[2*MAXN];int head[MAXN];int tol;int smaxn[MAXN],maxn[MAXN],smaxid[MAXN],maxid[MAXN];void Add_Edge(int u,int v,int w){ edge[tol].to=v; edge[tol].len=w; edge[tol].next=head[u]; head[u]=tol++;}void Init(){ tol=0; memset(head,-1,sizeof(head));}void dfs1(int u,int f){ maxn[u]=0; smaxn[u]=0; for(int i=head[u];i!=-1;i=edge[i].next){ int v=edge[i].to; if(v==f)continue; dfs1(v,u); if(smaxn[u]<maxn[v]+edge[i].len){ smaxn[u]=maxn[v]+edge[i].len; smaxid[u]=v; if(smaxn[u]>maxn[u]){ swap(smaxn[u],maxn[u]); swap(smaxid[u],maxid[u]); } } }}void dfs2(int u,int s){ for(int i=head[u];i!=-1;i=edge[i].next){ int v=edge[i].to; if(v==s)continue; if(v==maxid[u]){ if(edge[i].len+smaxn[u]>smaxn[v]){ smaxn[v]=edge[i].len+smaxn[u]; smaxid[v]=u; if(smaxn[v]>maxn[v]){ swap(smaxn[v],maxn[v]); swap(smaxid[v],maxid[v]); } } } else { if(edge[i].len+maxn[u]>smaxn[v]){ smaxn[v]=edge[i].len+maxn[u]; smaxid[v]=u; if(smaxn[v]>maxn[v]){ swap(smaxn[v],maxn[v]); swap(smaxid[v],maxid[v]); } } } dfs2(v,u); }}int main(){ int n,v,len; while(cin>>n){ Init(); for(int i=2;i<=n;i++){ cin>>v>>len; Add_Edge(i,v,len); Add_Edge(v,i,len); } dfs1(1,-1); dfs2(1,-1); for(int i=1;i<=n;i++) cout<<maxn[i]<<endl; }}
- HDU 2196 树形dp
- HDU 2196 树形dp
- hdu 2196 树形dp
- hdu 2196 (树形DP)
- hdu 2196 树形DP
- hdu 2196 树形dp
- hdu 2196 树形dp
- hdu 2196 (树形DP)
- hdu 2196树形dp
- hdu 2196 树形dp
- hdu 2196 树形DP
- hdu 2196(树形dp)
- hdu 2196 【树形DP】
- HDU 2196 树形DP
- 树形DP HDU 2196
- HDU 2196 Computer(树形dp)
- 【树形DP】 HDU 2196 Computer
- HDU 2196 Computer(树形DP)
- android 仿path半圆形菜单
- 关于虚函数的理解
- 记录、反思
- 问题一百三十三:不容易系列之二
- Pointers on C 读书笔记1 基本概念
- HDU 2196 树形dp
- C语言关键字const再理解
- mysql中导入txt文件数据的操作指令
- [USACO 3.1.6]邮票【同上:还是完全背包】CSUST 1084
- Digital Deletions+博弈
- 大话设计模式 享元模式
- cmd命令行进入相关目录
- HDU-1028Ignatius and the Princess III(母函数)
- 大三下学期,