BZOJ 1131 [POI2008]Sta
来源:互联网 发布:cnc编程软件排行 编辑:程序博客网 时间:2024/06/04 18:21
树形DP
记f[i]为i子树到i距离和
记g[i]为所有节点到i距离和
DP两次即可
#include<cstdio>#define N 1000005#define ll long longusing namespace std;struct edge{int next,to;}e[N<<1];int ecnt=1, last[N], siz[N], n, pos;ll f[N], g[N], mx;void addedge(int a, int b){ e[++ecnt]=(edge){last[a],b}; last[a]=ecnt;}void dp1(int x, int fa){ siz[x]=1; for(int i = last[x]; i; i=e[i].next) { int y=e[i].to; if(y==fa)continue; dp1(y,x); siz[x]+=siz[y]; f[x]+=f[y]+siz[y]; }}void dp2(int x, int fa){ if(x!=1)g[x]=g[fa]+n-2*siz[x]; else g[x]=f[x]; if(g[x]>mx)mx=g[x],pos=x; else if(g[x]==mx && pos>x)pos=x; for(int i = last[x]; i; i=e[i].next) { int y=e[i].to; if(y!=fa)dp2(y,x); }}int main(){ scanf("%d",&n); for(int i = 1; i < n; i++) { int a, b; scanf("%d%d",&a,&b); addedge(a,b); addedge(b,a); } dp1(1,0); dp2(1,0); printf("%d\n",pos);}
0 0
- bzoj 1131: [POI2008]Sta
- BZOJ 1131 [POI2008]Sta
- bzoj 1131 [POI2008]Sta
- BZOJ 1131: [POI2008]Sta
- BZOJ 1131 POI2008 Sta 树形DP
- BZOJ 1131 POI2008 Sta 树形DP
- BZOJ 1131 [POI2008]Sta 树形DP
- bzoj 1131: [POI2008]Sta(树形DP)
- BZOJ 1131: [POI2008]Sta 树形DP
- bzoj 1131: [POI2008]Sta 树形dp
- 【BZOJ】1131 [POI2008]Sta 递推
- bzoj 1131: [POI2008]Sta(DPS)
- 洛谷 P3478 [POI2008]STA-Station(bzoj P1131 [POI2008]STA-Station)
- luogu 3478 bzoj 1131 poi2008 sta 树形dp
- 1131: [POI2008]Sta
- 【BZOJ】【P1131】【POI2008】【Sta】【题解】【dfs+bfs】
- [POI2008]Sta
- bzoj-1131 Sta
- 再次介绍一位大神的网站
- Linux命令之"lsof"
- 一个线程死锁的例子
- JQuery事件
- bzoj 1103 POI2007 大都市meg
- BZOJ 1131 [POI2008]Sta
- mysql自动备份(Windows)
- Andriod进程间的通信AIDL
- 对关系型数据库五个范式的理解
- If Slack But Ryver!
- 欢迎使用CSDN-markdown编辑器
- HDU4791——Alice's Print Service(线段树)
- 常见聚类算法分类
- 【codeforces 724B Batch Sort】+ 枚举