博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【HDU 2196】 Computer(树的直径)
阅读量:6386 次
发布时间:2019-06-23

本文共 1515 字,大约阅读时间需要 5 分钟。

【HDU 2196】 Computer(树的直径)

题链http://acm.hdu.edu.cn/showproblem.php?pid=2196

这题可以用树形DP解决,自然也可以用最直观的方法解,先求出树的直径,那么树的任意节点的最远点必然是直径上的两个端点之一,证明可以通过反证法构造:

设端点为a,b;设任意点为i,假设存在一点c到i的距离大鱼i到a,b的距离,那么a与c又能形成一个距离更长的点对,与ab是直径的假设不符,因此不存在c,证明完成。

#include 
#include
#include
#include
#include
#include
#include
#include
#define ll long long#define inf 10000000000000#define mod 1000000007using namespace std;ll read(){ ll x=0,f=1; char ch=getchar(); while(ch<'0'||ch>'9') { if(ch=='-')f=-1; ch=getchar(); } while(ch>='0'&&ch<='9') { x=x*10+ch-'0'; ch=getchar(); } return x*f;}const int N=1e4+10;const int M=2e4+10;struct Edge{ int cost,to,nxt;}Path[M];int last[N],cnt;void Addedge(int u,int v,int w){ Path[cnt]=(Edge){w,v,last[u]}; last[u]=cnt++;}int q[N*2],d[N],X;void bfs(int x){ X=0; int head=0,tail=1; q[0]=x; memset(d,0,sizeof(d)); d[x]=1; while(head!=tail){ int cur=q[head]; head++; if(d[cur]>d[X]) X=cur; for(int i=last[cur];i;i=Path[i].nxt){ int v=Path[i].to; if(!d[v]&&v!=x){ d[v]=d[cur]+Path[i].cost; q[tail++]=v; } } }}void Init(){ memset(last,0,sizeof(last)); cnt=1;}int d2[N];int main(){ int n; while(~scanf("%d",&n)){ Init(); for(int v=2;v<=n;v++){ int u=read(),w=read(); Addedge(u,v,w); Addedge(v,u,w); } bfs(1);int ans1=X; bfs(X);int ans2=X; for(int i=1;i<=n;i++) d2[i]=d[i]-1; bfs(X); for(int i=1;i<=n;i++){ printf("%d\n",max(d[i]-1,d2[i])); } } return 0;}

转载于:https://www.cnblogs.com/zsyacm666666/p/6958866.html

你可能感兴趣的文章
免SDK实现微信/支付宝转账打赏功能
查看>>
安卓.9图片制作
查看>>
MySQL 高可用性keepalived+mysql双主
查看>>
Python环境安装及数据基本预处理-大数据ML样本集案例实战
查看>>
GraphQL学习:Github GraphQL API v4初探
查看>>
【详解】TiDB 2.0 GA is here !
查看>>
iOS开发-模拟网络环境
查看>>
Redux执行流程梳理
查看>>
iOS 指纹识别
查看>>
说说 Vue.js 组件
查看>>
iPhone 用USB连接SSH的时候一直报错
查看>>
关于Vuex的action传入多个参数的问题
查看>>
放弃jQuery, 使用原生js
查看>>
跨越适配&性能那道坎,企鹅电竞Android weex优化
查看>>
一文读懂鼠标滚轮事件(wheelEvent)
查看>>
腾讯云国内节点centos7.2安装k8sv1.12.3
查看>>
Python爬虫--- 1.5 爬虫实践: 获取百度贴吧内容
查看>>
解决Shell脚本$'\r': command not found问题
查看>>
ionic3使用百度地图
查看>>
JavaWEB开发11——JSP
查看>>