acgo题库
  • 首页
  • 题库
  • 学习
  • 竞赛
  • 讨论
  • 排行
  • 团队
  • 备赛专区

    竞赛

    • CSP-J/S
    • 蓝桥杯

    考级

    • GESP
    • CPA
    • 电子学会考级
登录
注册
题目详情提交记录(0)
  • 正经题解

    userId_undefined

    复仇者_零

    永恒钻石快乐小狗出题人
    24阅读
    1回复
    2点赞
  • 不是题解,或许吧

    换根dp版题

    userId_undefined

    Ù̜ṔD̂Ă̭T̃̆Ē̅

    出道萌新时间刺客空间掌握者倔强青铜
    10阅读
    0回复
    1点赞
  • 题解

    两个深搜,注释可以看看

    userId_undefined

    复仇者_纳西妲厨一位

    秩序白银题解仙人时空双修者集训营话痨
    8阅读
    0回复
    1点赞
  • 知予牌超级无敌巨详细题解

    userId_undefined

    周幽王

    倔强青铜
    8阅读
    0回复
    0点赞
  • 换根dp书上代码

    #include<bits/stdc++.h> using namespace std; const int N = 1e6 + 10; vector<int> e[N]; long long dp[N],sz[N],dep[N],n,mx,mxid; void dfs1(int now,int lst) { sz[now] = 1; dep[now] = dep[lst] + 1; for(int i = 0;i < e[now].size();i++) { int next = e[now][i]; if(next == lst) { continue; } dfs1(next,now); sz[now] += sz[next]; } } void dfs2(int now,int lst) { for(int i = 0;i < e[now].size();i++) { int next = e[now][i]; if(next == lst) { continue; } dp[next] = dp[now] - sz[next] +(n - sz[next]); dfs2(next,now); } } int main() { cin >> n; for(int i = 1;i < n;i++) { int u,v; cin >> u >> v; e[u].push_back(v); e[v].push_back(u); } dfs1(1,0); for(int i = 1;i <= n;i++) { dp[1] += dep[i]; } dfs2(1,0); for(int i = 1;i <= n;i++) { if(dp[i] > mx) { mx = dp[i]; mxid = i; } } cout << mxid << endl; }

    userId_undefined

    思

    时间刺客空间掌握者
    0阅读
    0回复
    0点赞
暂无数据

提交答案之后,这里将显示提交结果~

首页