题面

Description

Input

Output

Sample Input

4
1 4
2 4
3 4

Sample Output

2
2
2
3

HINT

题解

考虑到一个性质:任意两个相邻的节点,它们的ansansans值相差为1。(这是显然的,自己画一下就好了)

所以我们就先任意选出一个点,将它为都城的答案求出来,再从这个节点开始遍历一遍树,通过两相邻节点间的关系求出ansansans。

完整代码如下:

#include<bits/stdc++.h>#define N 1000010using namespace std;int n,cnt,head[N],nxt[N<<1],to[N<<1],ans[N];
bool flag[N<<1];//flag来记录每条边是否为高速公路void adde(int u,int v,bool b)
{to[++cnt]=v;flag[cnt]=b;nxt[cnt]=head[u];head[u]=cnt;
}void dfs1(int u,int fa)
{for(int i=head[u];i;i=nxt[i]){if(to[i]!=fa){if(!flag[i])ans[1]++;dfs1(to[i],u);}}
}void dfs2(int u,int fa)
{for(int i=head[u];i;i=nxt[i]){if(to[i]!=fa){if(flag[i])ans[to[i]]=ans[u]+1;//这里手推一下吧else ans[to[i]]=ans[u]-1;dfs2(to[i],u);}}
}int main()
{scanf("%d",&n);for(int i=1;i<n;i++){int u,v;scanf("%d%d",&u,&v);adde(u,v,1);//记录高速公路adde(v,u,0);}dfs1(1,-1);//第一遍深搜求1的ansdfs2(1,-1);//第二遍深搜求出所有节点的ansfor(int i=1;i<=n;i++)printf("%d\n",ans[i]);return 0;
}

总结

关于树的解法:

  1. 树形dp

  2. 树链剖分

  3. 数据结构

  4. 树的遍历

  5. 最小生成树

【XSY2500】都城(树形dp)相关推荐

  1. BNUOJ 52305 Around the World 树形dp

    题目链接: https://www.bnuoj.com/v3/problem_show.php?pid=52305 Around the World Time Limit: 20000msMemory ...

  2. [树形dp] Jzoj P5233 概率博弈

    Description 小A和小B在玩游戏.这个游戏是这样的: 有一棵n个点的以1为根的有根树,叶子有权值.假设有m个叶子,那么树上每个叶子的权值序列就是一个1->m 的排列. 一开始在1号点有 ...

  3. fwt优化+树形DP HDU 5909

    1 //fwt优化+树形DP HDU 5909 2 //见官方题解 3 // BestCoder Round #88 http://bestcoder.hdu.edu.cn/ 4 5 #include ...

  4. BZOJ 1040 ZJOI2008 骑士 树形DP

    题目大意:给定一个基环树林,每一个点上有权值,要求选择一个权值和最大的点集,要求点集中的随意两个点之间不能直接相连 最大点独立集--考虑到n<=100W,网络流铁定跑不了,于是我们考虑树形DP ...

  5. POJ 3342 树形DP+Hash

    这是很久很久以前做的一道题,可惜当时WA了一页以后放弃了. 今天我又重新捡了起来.(哈哈1A了) 题意: 没有上司的舞会+判重 思路: hash一下+树形DP 题目中给的人名hash到数字,再进行运算 ...

  6. [NC15748]旅游 树形dp基础

    菜鸡第一次接触树形dp这个东西,不过这个东西还是很好理解的(可能是因为模板题吧) 个人感觉,相比线性dp,树形dp的状态转移方程更加的直观,难点主要是在"树"的结构上比较麻烦. 题 ...

  7. 容斥 + 树形dp ---- 2021 icpc 沈阳 L Perfect Matchings

    题目链接 题目大意: 就是给你一个2n2n2n个点的完全图,从这个图里面抽出2n−12n-12n−1条边,这些边形成一颗树,现在问你剩下的图里面点进行完美匹配有多少种方案? 解题思路: 一开始被完美匹 ...

  8. 树形dp ---- gym101667 A(贪心 + 树形dp + 两个dp方程组维护)

    题目链接 题目大意: 就是一棵5e35e35e3的树,可以选择一些点,放上基站,如果uuu上的基站价值为ddd,那么距离uuu小于等于ddd的点都会被覆盖,问使得整棵树被覆盖需要的最小价值. 解题思路 ...

  9. 树形dp ---- 2018年杭电多校第二场 H travel

    题目大意: 就是给你一个带点权的树,找到3条独立互不相交的路径使得权值和最大 解题思路: 很经典的树形dp 我们设dp[root][j][k]dp[root][j][k]dp[root][j][k]表 ...

最新文章

  1. 企业内网中的WSUS更新服务 服务器连接到Microsoft Update来获取更新程序
  2. mysql的分页怎么不对_mysql一对多关联查询分页错误问题的解决方法
  3. ADS的go to命令
  4. 用 python 实现一个多线程网页下载器
  5. 用计算机 发的,计算机的发分类及应用.ppt
  6. QT5.4 vs2013静态加载插件的sqlite静态编译
  7. win10专业版和企业版的区别_深度完美Win10_1809_LTSC.1158_64位企业版V2020.0415
  8. sqlMetal用法和例子
  9. 什么原因导致百度搜索比Google要少很多?
  10. c语言判断任意位数能否倒序数,C语言求助!一个三位数的逆序数,总是编不对...
  11. java多线程-生产者消费者模式
  12. python转义例题_笨办法学Python记录--习题37 异常,lambda,yield,转义序列
  13. PostgreSQL的实践一:数据类型(一)
  14. Java 8 中处理集合的优雅姿势——Stream
  15. linux操作系统基础教程第二版附录答案,Linux操作系统(第2版) 课后习题答案
  16. IDEA中进行spring项目开发配置文件中如何导入spring命名空间
  17. mysql myisam 主键关联_MySQL中myisam和innodb的主键索引有什么区别?
  18. Qt 做个简易的计算器,加减乘除平方开根
  19. PCIe板卡结构尺寸
  20. TFLearn初探之optimizers、losses和learning_rate

热门文章

  1. Linux - #!/bin/bash 和 #!/usr/bin/env bash 的区别
  2. 使用jmeter进行api接口压力测试
  3. Java程序员的技术进阶成长路线
  4. android在线签名sdk,Android 微信 SDK 签名问题
  5. d3.js操作svg
  6. [Python人工智能] 十七.Keras搭建分类神经网络及MNIST数字图像案例分析
  7. 计算机系统未来发展方向论文,浅谈计算机未来发展趋势(期末论文)
  8. JAVA虚拟机--JVM
  9. 基于SSM的学生信息管理系统的设计
  10. linux syscall