其实这道题不难

首先假设 111 是根节点

我看到这道题第一反应就是直接假设整棵树权值之和是某一个定值,然后再dfs造每一个 axa_xax​ 。(其实到这里就可以a了,但是不优雅)

我们发现,由于去掉某一个节点之后,它所有的儿子所在的子树之和都和它上面那一部分之和是一样的,于是我们就有了:sumx′sson=sum1−sumxsum_{x's\ son}=sum_1-sum_xsumx′s son​=sum1​−sumx​ 其中(x≠1x\ne1x​=1,下同)

又因为:ax=sumx−∑sumx′ssona_x=sum_x-\sum sum_{x's\ son}ax​=sumx​−∑sumx′s son​

结合一下就成了ax=sum1−degx×(sum1−sumx)a_x=sum_1-deg_x\times(sum_1-sum_x)ax​=sum1​−degx​×(sum1​−sumx​)

当我们令 sum1=0sum_1=0sum1​=0 时,发现:

  • sumx′sson=−sumxsum_{x's\ son}=-sum_xsumx′s son​=−sumx​
  • ax=degx∗sumxa_x=deg_x*sum_xax​=degx​∗sumx​

我们再令 sumx=(−1)depxsum_x=(-1)^{dep_x}sumx​=(−1)depx​ ,就可以发现 ax=degx(−1)depxa_x=deg_x(-1)^{dep_x}ax​=degx​(−1)depx​

不难发现,这个结论在 x=1x=1x=1 时也成立

再手动构造几组小数据后发现构造方法正确,就可以优雅的写代码了,芜湖起飞!

最后献上我其丑无比的代码:

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int n,ans[N];
vector<int>ed[N];
void dfs(int x,int fa,int k){ans[x]=ed[x].size()*k;for(int y:ed[x])if(fa!=y)dfs(y,x,-k);
}
void solve(){cin>>n;for(int i=1;i<=n;i++)ed[i].clear();for(int i=1,u,v;i<n;i++){cin>>u>>v;ed[u].emplace_back(v);ed[v].emplace_back(u);}dfs(1,1,1);for(int i=1;i<=n;i++)cout<<ans[i]<<" ";cout<<'\n';
}
int main(){int t;cin>>t;while(t--)solve();
}

CF1656E Equal Tree Sums题解相关推荐

  1. 洛谷P2619 [国家集训队]Tree I 题解

    洛谷P2619 [国家集训队]Tree I 题解 题目链接:P2619 [国家集训队]Tree I 题意: 给你一个无向带权连通图,每条边是黑色或白色.让你求一棵最小权的恰好有 need\text{n ...

  2. [LeetCode] Binary Tree Postorder题解

    Binary Tree Postorder Given a binary tree, return the postorder traversal of its nodes' values. For ...

  3. PAT甲级1060 Are They Equal:[C++题解]字符串处理、有效数字、代码简洁!!!

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析:字符串处理 题意:把一个数变成0.xxxxx * 10^xxxxx 的形式(小数点后面第一个是大于零的数,除非输入的数本来就是0),位 ...

  4. Lintcode93 Balanced Binary Tree solution 题解

    [题目描述] Given a binary tree, determine if it is height-balanced. For this problem, a height-balanced ...

  5. Codeforces Round #646 (Div. 2)E. Tree Shuffling 题解(dfs)

    题目链接 题目大意 给你一颗树,每一个节点有一个a[i],b[i],c[i]值,你要把b[i]变成c[i],b[i]和c[i]为[0,1],你操作的方法是,选择一个节点x,选择他的k个子树,然后进行交 ...

  6. 【luogu P3931 SAC E#1 - 一道难题 Tree】 题解

    题目链接:https://www.luogu.org/problemnew/show/P3931 肉眼观察题目感觉可以跑最大流. 证明是如果拆断一棵树,可以最小割,最小割等于最大流. 注意: 图是无向 ...

  7. LeetCode 222. Count Complete Tree Nodes 题解——Java

    题目链接:https://leetcode.com/problems/count-complete-tree-nodes/#/description 题目要求:计算完全二叉树的节点个数 思路:首先想到 ...

  8. CodeTON Round 1 (Div. 1 + Div. 2, Rated, Prizes)

    A Good Pairs You are given an array a1,a2,-,ana_1,a_2,-,a_na1​,a2​,-,an​ of positive integers. A goo ...

  9. 树链剖分概念及模板 + 例题 [POJ3237 tree + 软件包管理器]

    文章目录 概念 模板 例题1:软件包管理器 题目 题解 代码实现 例题2:POJ3237 tree 题目 题解 代码实现 概念 树链剖分主要是用于解决以下这两个问题. 1.更改树上点x到点y的最短路径 ...

最新文章

  1. ubuntu安装mysql 密码忘了怎么办_在ubuntu上面安装mysql都密码忘记及一些常用命令...
  2. 【312】◀▶ arcpy 常用函数说明
  3. 洛谷 P2735 电网 Electric Fences Label:计算几何--皮克定理
  4. 规培手册填写模板_9年老资料员经验分享,181套资料员模板+302页工作手册,成为优秀资料员还能提高工作效率,限时分享...
  5. 从java读取Excel继续说大道至简 .
  6. 8_19 比赛总结 [暑假集训]
  7. kafak 命令使用
  8. 了解mysql的undo log
  9. Visual Studio 2019 创建第一个ASP.net web应用程序
  10. 动态规划:完全背包问题
  11. cousera上的华盛顿机器学习专项课程的案例学习学习经历分享
  12. ubuntu10.10安装google拼音输入法
  13. tensorflow6-7
  14. PTA Easy chemistry 化学方程式等价判定 string 状态机
  15. SpringBoot之——动态数据源(多数据源自动切换)
  16. Apk应用安全加固所需了解的Application启动流程
  17. 图片转base64 不换行
  18. 各种json工具包的比较
  19. android+省电播放器,播放耗电:QQ影音等三款最省电_软件资讯软件评测-中关村在线...
  20. 阿里曾洽谈收购才云科技事宜:被字节跳动截胡,收入囊中

热门文章

  1. Bootstrap常见问题汇总
  2. BUG: scheduling while atomic: swapper/0/0/0x00010000
  3. UML系列文章(19)基本行为---交互图
  4. 实习汇总:爱奇艺、安永、网易、滴滴、百度、优酷、国家统计局、搜狐、爱立信
  5. Node+OBS直播服务器搭建总结
  6. java计算机毕业设计ssm基于web的教学资源管理系统01jkz(附源码、数据库)
  7. PostgreSQL 数据库巡检模板和脚本。
  8. 计算机一级考试操作题怎么评分,计算机一级word和excel操作自动评分实现.doc
  9. 数据分析真题日刷 | 小红书2019年校园招聘数据分析岗位在线笔试第一批
  10. 记一次2022某地HVV中的逆向分析