BZOJ 1131 [POI 2008] 解题报告
来源:互联网 发布:福建网络安全教育 编辑:程序博客网 时间:2024/06/05 16:18
1131: [POI2008]Sta
Description
给出一个N个点的树,找出一个点来,以这个点为根的树时,所有点的深度之和最大
Input
给出一个数字N,代表有N个点.N<=1000000 下面N-1条边.
Output
输出你所找到的点,如果具有多个解,请输出编号最小的那个.
Sample Input
8
1 4
5 6
4 5
6 7
6 8
2 4
3 4
Sample Output
7
【解题报告】
两次dfs
求出
代码如下:
/************************************************************** Problem: 1131 User: onepointo Language: C++ Result: Accepted Time:7896 ms Memory:61296 kb****************************************************************/#include<cstdio>#include<cstring>#include<algorithm>using namespace std;#define N 1000010#define LL long longint n,cnt,head[N],ans;struct Edge{int to,nxt;}e[N<<1];int size[N],deep[N];LL dp[N];void adde(int u,int v){ e[++cnt].to=v;e[cnt].nxt=head[u];head[u]=cnt; e[++cnt].to=u;e[cnt].nxt=head[v];head[v]=cnt;}void dfs0(int u,int fa){ size[u]=1;dp[u]=(LL)deep[u]; for(int i=head[u];~i;i=e[i].nxt) { int v=e[i].to; if(v==fa) continue; deep[v]=deep[u]+1; dfs0(v,u); dp[u]+=dp[v]; size[u]+=size[v]; }}void dfs1(int u,int fa){ for(int i=head[u];~i;i=e[i].nxt) { int v=e[i].to; if(v==fa) continue; dp[v]=dp[u]+n-2*size[v]; dfs1(v,u); }}int main(){ cnt=-1; memset(head,-1,sizeof(head)); scanf("%d",&n); for(int i=1;i<n;++i) { int u,v;scanf("%d%d",&u,&v); adde(u,v); } dfs0(1,1); dfs1(1,1); for(int i=1;i<=n;++i) if(dp[i]>dp[ans]) ans=i; printf("%d\n",ans); return 0;}
阅读全文
0 0
- BZOJ 1131 [POI 2008] 解题报告
- BZOJ 1116 [POI 2008] 并查集 解题报告
- BZOJ 2079 [Poi 2010] 图论 解题报告
- BZOJ 3833 [POI 2014] Solar Lamps 解题报告
- BZOJ 2792 [POI 2012] 二分答案 解题报告
- BZOJ 1103 [POI 2007] dfs序+树状数组 解题报告
- BZOJ 2527 [Poi 2011] 整体二分 解题报告
- BZOJ 1097 [POI 2007] SPFA+状压DP 解题报告
- BZOJ 4726 [POI 2017] 树DP 解题报告
- BZOJ 2212 [Poi 2011] 线段树合并 解题报告
- BZOJ 1529 [POI 2005] 并查集 解题报告
- BZOJ 2049 [Sdoi 2008] LCT 解题报告
- BZOJ 1013 [JSOI 2008] 高斯消元 解题报告
- BZOJ 1036 [ZJOI 2008] 树链剖分 解题报告
- 【BZOJ】 【1131】【Sta】 【POI 2008】
- BZOJ 1588 TREAP 解题报告
- bzoj 3223 splay 解题报告
- BZOJ 3223 Splay 解题报告
- Aspone.Word导出字符串到书签
- SQL中几个快速定位语句
- hdu1198 Farm Irrigation
- Excel 时间戳和时间格式的互相转换
- pandas小记:pandas计算工具-汇总统计
- BZOJ 1131 [POI 2008] 解题报告
- Travel HDU
- SQL取字符串中的数字OR字母
- 霍夫变换(直线检测)
- 用shell控制hql执行,如何控制多个阶段之间串行,阶段内部并行
- 文章标题
- ptyhon学习手册 第四版学习笔记(留坑)
- Kotlin 中的泛型
- Laravel 数据库加密及数据库表前缀配置