lightoj 1257 - Farthest Nodes in a Tree (II) 树直径
2016-04-08 14:55
465 查看
给定一棵树,问树上每个点到其他的点最远的距离。
首先所有点到树的直径两端点肯定是最远的(请百度树的直径,所以就是所有点到树的直径两端点那个更长..
任选一点跑一边搜索找出来树的直径一个端点,在一遍搜索就可以找到另外一个端点,顺便求得所有点到这个端点的距离啦。
然后再来一遍求另外一个端点到所有点的距离...
首先所有点到树的直径两端点肯定是最远的(请百度树的直径,所以就是所有点到树的直径两端点那个更长..
任选一点跑一边搜索找出来树的直径一个端点,在一遍搜索就可以找到另外一个端点,顺便求得所有点到这个端点的距离啦。
然后再来一遍求另外一个端点到所有点的距离...
#include<bits/stdc++.h> using namespace std; #define ll long long #define ull unsigned long long #define mod 1000000007 #define inf 0x3f3f3f3f int dp[40000]; struct edge { int u,v,w,next; }edge[80000]; int head[40000],tot,used[40000],s,mlen; void init() { memset(dp,0,sizeof(dp)); memset(head,-1,sizeof(head)); memset(used,0,sizeof(used)); tot=0; } void add(int u,int v,int w) { edge[tot].v=v; edge[tot].w=w; edge[tot].next=head[u]; head[u]=tot++; } void dfs(int u,int pre,int len) { if(mlen<len) { s=u; mlen=len; } for(int i=head[u];i!=-1;i=edge[i].next) { int v=edge[i].v; int w=edge[i].w; if(v==pre) continue; dfs(v,u,len+w); dp[v]=max(dp[v],len+w); } } int main() { int t; scanf("%d",&t); for(int cas=1;cas<=t;cas++) { int n,u,v,w; init(); scanf("%d",&n); for(int i=0;i<n-1;i++) { scanf("%d %d %d",&u,&v,&w); add(u,v,w); add(v,u,w); } s=mlen=0; dfs(1,-1,0); dfs(s,-1,0); dfs(s,-1,0); printf("Case %d:\n",cas); for(int i=0;i<n;i++) printf("%d\n",dp[i]); } return 0; }
相关文章推荐
- nodejs错误 : request entity too large
- [置顶] node-webkit支持sqlite
- 开源虚拟化解决方案ovirt实验(2.ovirt-node安装)
- kafka创建topic报错:KeeperException$NoNodeException: KeeperErrorCode = NoNode for /brokers/ids
- 几行代码搞定nodejs中的回调坑
- [置顶] Node 升级工具n 大坑
- 'nodeName' 为空或不是对象的原因
- LeetCode *** 24. Swap Nodes in Pairs
- Dom4j 存在命名空间导致document.selectNodes() 无返回结果
- 在NodeJS中使用流程控制工具Async
- swap nodes in pairs
- LeetCodet题解--19. Remove Nth Node From End of List(删除链表的倒数第n个元素)
- FILE 结构体的定义,inode ,软链接和硬链接的理解
- #leetcode#237. Delete Node in a Linked List
- [置顶] windows上node-webkit安装sqlite、socket的那些坑
- 简单理解 unix (liunx)inode
- 关于childNodes及children的区别(图文结合)
- node使用buffer生成图片
- DataNode本地数据存储和管理--ncp_block_verification.log.curr和dncp_block_verification.log.prev
- inode 及软链接、硬链接