hdu2196 Computer
来源:互联网 发布:食品安全事故数据统计 编辑:程序博客网 时间:2024/05/21 00:47
求树的所有结点的最长直径
#include<iostream>#include<cstring>#include<cstdio>using namespace std;#define M 10010int len[M],len2[M],leaf[M],leaf2[M],head[M];int n,tot;struct node{ int to,dis,next;}edge[M*2];void insert(int u,int v,int dis){ edge[tot].to=v; edge[tot].dis=dis; edge[tot].next=head[u]; head[u]=tot++;}void dfs(int u,int pre){ int i,v; for(i=head[u];i!=-1;i=edge[i].next){ v=edge[i].to; if(v==pre) continue; dfs(v,u); if(len[v]+edge[i].dis>len[u]){ len2[u]=len[u]; leaf2[u]=leaf[u]; len[u]=len[v]+edge[i].dis; leaf[u]=v; } else if(len[v]+edge[i].dis>len2[u]){ len2[u]=len[v]+edge[i].dis; leaf2[u]=v; } }}void dfs2(int u,int pre){ int i,v; for(i=head[u];i!=-1;i=edge[i].next){ v=edge[i].to; if(v==pre) continue; if(leaf[u]==v){ if(len2[u]+edge[i].dis>len[v]){ len2[v]=len[v]; leaf2[v]=leaf[v]; len[v]=len2[u]+edge[i].dis; leaf[v]=u; } else if(len2[u]+edge[i].dis>len2[v]){ len2[v]=len2[u]+edge[i].dis; leaf2[v]=u; } } else{ if(len[u]+edge[i].dis>len[v]){ len2[v]=len[v]; leaf2[v]=leaf[v]; len[v]=len[u]+edge[i].dis; leaf[v]=u; } else if(len[u]+edge[i].dis>len2[v]){ len2[v]=len[u]+edge[i].dis; leaf2[v]=u; } } dfs2(v,u); }}int main(){ int v,dis; while(scanf("%d",&n)!=EOF){ tot=0; memset(head,-1,sizeof(head)); memset(len,0,sizeof(len)); memset(len2,0,sizeof(len2)); memset(leaf,-1,sizeof(leaf)); for(int i=2;i<=n;i++){ scanf("%d%d",&v,&dis); insert(i,v,dis); insert(v,i,dis); } dfs(1,-1); dfs2(1,-1); for(int i=1;i<=n;i++) printf("%d\n",len[i]); } return 0;}
- hdu2196 Computer
- hdu2196 Computer
- 【HDU2196】【Computer】
- HDU2196-Computer
- 【hdu2196】Computer
- 【树形DP】 hdu2196 Computer
- hdu2196 Computer 两次dfs
- HDU2196:Computer(树形DP)
- HDU2196 - Computer (树形DP)
- hdu2196——Computer
- HDU2196 Computer(树形DP)
- hdu2196 Computer 【树形dp】
- hdu2196 Computer【树形DP】
- hdu2196 Computer(树形dp)
- hdu2196 computer dfs 树形dp
- [HDU2196]Computer(树形dp)
- 【树的直径】HDU2196-Computer
- hdu2196 Computer (树形dp)
- DELPHI中MessageBox的用法
- leetcode之subsets
- 消灭顽固的exe病毒,拯救宝贵的文件
- 大学生活结束,工作生涯的开始
- 图片查看器、网页源码查看器
- hdu2196 Computer
- uva 10285 - Longest Run on a Snowboard(dp+记忆化搜索)
- Just a Hook
- Sicily 1310. Right-Heavy Tree
- hdu1561 The more, The Better hdu1011 Starship Troopers
- POJ:3974 Palindrome (Manacher算法)
- .NETFramework
- POJ 2311 博弈
- linux常用