提交通道

洛谷日报

考虑非\(O(n^2)\)的预处理。一遍dfs时,check某颜色有没有的数组何时清空很尴尬:得到某树答案后如果不清,则影响接下来兄弟树的搜索;如果清了,父亲节点又难以收集答案。

解决方法:先让儿子们各顾各的家,算一遍各自的答案(假如能算),check清就清了吧。然后考虑人为优化,即重链求完后等一等!先别清!然后将轻链重新扫一遍,也不清check数组的。代码中的keep就控制是否要清。这样轻链扫两遍,重链扫一遍,就得到了儿子们和父亲的答案,随机数据下复杂度\(O(nlogn)\)。

const int maxn = 1e5 + 5;
int n, m, u, v, c[maxn];
int size[maxn], son[maxn], ans[maxn];
bool check[maxn];
vector<int> adj[maxn]; void dfs1(int cur, int fa) {
size[cur] = 1;
for (int i : adj[cur])
if (i != fa) {
dfs1(i, cur);
size[cur] += size[i];
if (size[i] > size[son[cur]])
son[cur] = i;
}
} int dfs2(int cur, int fa, int keep) {
if (keep) {
for (int i : adj[cur])
if (i != fa && i != son[cur])
dfs2(i, cur, keep);
}
int res = 0;
if (son[cur]) res += dfs2(son[cur], cur, keep);
for (int i : adj[cur])
if (i != fa && i != son[cur])
res += dfs2(i, cur, 0); if (!check[c[cur]]) res++, check[c[cur]] = 1;
if (keep) {
ans[cur] = res;
if (cur != son[fa]) mset(check, 0);
} return res;
} int main() {
read(n);
rep(i, 1, n - 1) {
read(u), read(v);
adj[u].push_back(v);
adj[v].push_back(u);
}
rep(i, 1, n) read(c[i]); dfs1(1, 0);
dfs2(1, 0, 1); for (read(m); m--; ) {
read(u);
writeln(ans[u]);
}
return 0;
}

最新文章

  1. Mac下手动安装Chromedriver.exe
  2. 新的框架,新的感觉ASP.NET MVC 分享一个简单快速适合新手的框架
  3. RabbitMQ 问题记录
  4. IEnumerable 和 IEnumerator
  5. B0BO TFS 安装指南(转载)
  6. python_计算一段文本各个字符的出现个数
  7. 机器学习(Machine Learning)&amp;深度学习(Deep Learning)资料【转】
  8. DTCMS通用分页列表
  9. 集合练习——Map部分
  10. 动态加载JS过程中如何判断JS加载完成
  11. 在地图中调用显示FeatureLayer并进行render、popupTemplate、添加图例等相关内容的设置
  12. debian9.6修改系统语言
  13. ImportError: No module named _tkinter, please install the python-tk package ubuntu运行tkinter错误
  14. linux 安装 SVN server
  15. C#中转换函数Convert、Parse、TryParse、(int) 的区别
  16. 用excel批量生成insert语句
  17. Treats for the Cows 区间DP POJ 3186
  18. 一款基于jquery和css3的响应式二级导航菜单
  19. Python基础—03-运算符与分支结构
  20. NOIP2017宝藏 [搜索/状压dp]

热门文章

  1. form表单提交target属性使用
  2. Ajax入门(一)从0开始到一次成功的GET请求
  3. chosen.jquery插件的使用
  4. iOS 添加Empty Application模板
  5. 在Linux里安装jdk
  6. JavaPersistenceWithHibernate第二版笔记-第六章-Mapping inheritance-005Table per subclass with joins(@Inheritance(strategy = InheritanceType.JOINED)、@PrimaryKeyJoinColumn、)
  7. 100078D Domestic Networks
  8. Luogu 2827 [NOIP2016] 蚯蚓
  9. python3-while与continue
  10. 自己封装一个MySignal函数,方便以后直接copy.