[POI2008] STA-Station - 树形dp
2024-10-08 09:01:07
很显然的递推式ans[q] = ans[p] + n - 2*siz[q];
这么个题你卡我常干嘛,害得我加快读
(谁叫我是vector
党呢
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 1000006;
inline int read(){
int s=0,w=1;
char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();
return s*w;
}
int n,siz[N],vis[N],sum[N],ans[N],t1,t2;
vector <int> g[N];
void dfs1(int p) {
vis[p]=1;
siz[p]=1;
for(int i=0;i<g[p].size();i++) {
int q=g[p][i];
if(vis[q]==0) {
dfs1(q);
siz[p]+=siz[q];
sum[p]+=sum[q]+siz[q];
}
}
}
void dfs2(int p) {
vis[p]=1;
for(int i=0;i<g[p].size();i++) {
int q=g[p][i];
if(vis[q]==0) {
ans[q] = ans[p] + n - 2*siz[q];
dfs2(q);
}
}
}
signed main() {
n=read();
for(int i=1;i<n;i++) {
t1=read();
t2=read();
g[t1].push_back(t2);
g[t2].push_back(t1);
}
dfs1(1);
ans[1]=sum[1];
memset(vis,0,sizeof vis);
dfs2(1);
cout<<max_element(ans+1,ans+n+1)-ans;
}
最新文章
- MongoDB数据库未授权访问漏洞及加固
- Fluent Nhibernate之旅(五)--利用AutoMapping进行简单开发
- Nodejs express中创建ejs项目,解决express下默认创建jade,无法创建ejs问题
- python学习-day15:局部变量与全局变量、嵌套函数、递归
- Archlinux添加MP3播放器
- Step by step configuration of Outgoing Emails from SharePoint to Microsoft Online
- 屏蔽EditText长按导致的弹出输入法的对话框
- diplay:table-cell和伪元素:after方法让图片居中
- Nginx的负载均衡 - 加权轮询 (Weighted Round Robin) 上篇
- 运用《深入理解Java虚拟机》书中知识解决实际问题
- Groovy闭包详解
- AppBoxFuture(一): Hello Future!
- 利用Navicate把SQLServer转MYSQL的方法(连数据)
- SYSAUX表空间清理
- 理解极大似然估计(MLE)
- Axis2之异步调用
- C++学习(二十四)(C语言部分)之 结构体1
- pandas入门——loc与iloc函数
- 16款值得一用的iPhone线框图模板 (PSD &; Sketch)
- [Node.js]25. Level 5. Route params
热门文章
- Android中Chronometer计时器的简单使用
- DK1.5-JDK11各个新特性
- Oracle查询如何才能行转列?-sunziren
- java 测试 (junit+ junit 断言 + postman)
- MySQL概述及入门(一)
- MacBook Pro安装VMware Fusion 11
- P4197 Peaks [克鲁斯卡尔重构树 + 主席树][克鲁斯卡尔重构树学习笔记]
- malloc分配内存的结构
- Tomcat中使用JNDI配置各种数据源
- 【Unity|C#】基础篇(1)——基础入门