Paint it really, really dark gray CodeForces - 717E
Paint it really, really dark gray
题意 有一棵树 每个结点是粉色或黑色 每经过一个结点 就改变他的颜色
从1开始遍历 打印出一条路径 让所有结点都变成黑色
思路就是 每到达一个结点 就改变它的颜色 打印这个结点
然后看它的叶子结点
如果没有叶子结点 自然就返回了
有叶子结点的话 那么递归遍历 把子树里面的颜色都变成黑
返回的时候 如果该叶子节点是粉色 就可以再一次访问该叶子节点 再返回
其实这是很浪费时间的 但是题目说只要打印出来的路径符合就好 我们自己看一棵树很容易看出子树里面存不存在粉色
但是程序就得递归遍历全看一遍了 或者可以预处理dfs一遍 再输出完美答案dfs一遍
但是好像更浪费时间hhh(我在说什么
还有一个细节 因为递归处理都是先改变这个结点的颜色 再去访问叶子节点 但是刚开始从1出发是不会改变1的颜色的
就得特判一下 如果全部处理完之后 1是黑色 那么原来就是粉色 就可以访问叶子 访问自己 再访问叶子 就可以了
代码如下
#include <cstdio>
#include <vector>
#include <cstring>
#include <algorithm>
using namespace std; const int maxn = 2e5 + ;
vector<int> G[maxn];
int color[maxn];
int ans[maxn];
int cnt; inline void fun(int u) { color[u] ^= ; printf("%d ", u); }
void dfs(int u, int fa) {
fun(u);
for (int i = ; i < G[u].size(); i++) {
int v = G[u][i];
if (v == fa) continue;
dfs(v, u);
fun(u);
if (color[v]) fun(v), fun(u);
}
if (u == && !color[u]) fun(G[u][]), fun(u), fun(G[u][]);
} int main() {
int n;
scanf("%d", &n);
for (int i = , x; i <= n; i++) {
scanf("%d", &x);
if (x == -) color[i] = ;
else color[i] = ;
}
for (int i = , x, y; i < n; i++) {
scanf("%d%d", &x, &y);
G[x].push_back(y);
G[y].push_back(x);
}
dfs(, );
puts("");
return ;
}
Paint it really, really dark gray CodeForces - 717E的更多相关文章
- 「CodeForces - 717E」Paint it really, really dark gray (dfs)
BUPT 2017 summer training (for 16) #1H 题意 每个节点是黑色or白色,经过一个节点就会改变它的颜色,一开始在1节点.求一条路径使得所有点变成黑色. 题解 dfs时 ...
- 树&图 记录
A - Lake Counting POJ - 2386 最最最最最基础的dfs 挂这道题为了提高AC率(糖水不等式 B - Paint it really, really dark gray Cod ...
- bupt summer training for 16 #1 ——简单题目
D.What a Mess 给n个数,求其中能满足 a[i] % a[j] == 0 的数对之和 n = 1W,max_ai = 100W 不是很大,所以就直接筛就可以了 计算可得最高复杂度 < ...
- PS网页设计教程XXIV——从头设计一个漂亮的网站
作为编码者,美工基础是偏弱的.我们可以参考一些成熟的网页PS教程,提高自身的设计能力.套用一句话,“熟读唐诗三百首,不会作诗也会吟”. 本系列的教程来源于网上的PS教程,都是国外的,全英文的.本人尝试 ...
- Devexpress VCL Build v2013 vol 13.2.2 发布
devexpress 2013 的第二个大版本出来了,一如既往, 基本上还是一个大补丁包.各位看官,自己看. What's New in 13.2.2 (VCL Product Line) New ...
- DevExpress Skins<2>
Skins DevExpress WinForms控件包括许多现成的绘画主题(或外观),用于更改DevExpress表单和控件的外观.您可以通过运行WinForms演示应用程序并使用外观选择器在可用主 ...
- 用python读写excel(xlrd、xlwt)
最近需要从多个excel表里面用各种方式整理一些数据,虽然说原来用过java做这类事情,但是由于最近在学python,所以当然就决定用python尝试一下了.发现python果然简洁很多.这里简单记录 ...
- 关于ArcGIS API for JavaScript中basemap的总结介绍(一)
实际上basemap这个概念并不只在arcgis中才有,在Python中有一个matplotlib basemap toolkit(https://pypi.python.org/pypi/basem ...
- 使用Python对Excel表格进行简单的读写操作(xlrd/xlwt)
算是一个小技巧吧,只是进行一些简单的读写操作.让人不爽的是xlrd和xlwt是相对独立的,两个模块的对象不能通用,读写无法连贯操作,只能单独读.单独写,尚不知道如何解决. #①xlrd(读) #cod ...
随机推荐
- BottomNavigationBar
重点: bottomNavigationBar: BottomAppBar( shape: CircularNotchedRectangle(),//这个就是设置floatingactionbutto ...
- [TPYBoard - Micropython之会python就能做硬件 1] 运行第一个脚本——点亮LED
转载请注明:@小五义http://www.cnblogs.com/xiaowuyiQQ群:64770604 会python就能做硬件! 一.TPYBoard V102开发板 TPYBoard V102 ...
- UITableView 和 UITableViewController
UITableView:显示有多行数据的一个列. 新建一个过程:Xcode -> File -> New -> Project...,然后选择iOS -> Applicatio ...
- 用包来组织模型 -- Django从入门到精通系列教程
该系列教程系个人原创,并完整发布在个人官网刘江的博客和教程 所有转载本文者,需在顶部显著位置注明原作者及www.liujiangblog.com官网地址. 在我们使用python manage.py ...
- mybatis源码-原来resultMap解析完是这样
目录 1 两个基础类 1.1 列映射类ResultMapping 1.2 结果集映射类ResultMap 2. 解析 2.1 入口函数 2.2 解析流程 2.3 获取 id 2.4 解析结果集的类型 ...
- 解决React通过ajax加载数据更新页面不加判断会报错的问题
通过AJAX加载数据是一个很普遍的场景.在React组件中如何通过AJAX请求来加载数据呢?首先,AJAX请求的源URL应该通过props传入:其次,最好在componentDidMount函数中加载 ...
- 循环 while
day 2 ---------------------------------------------------把一件简单的事情做到极致,你就成功了. Day2作业及默写 1.判断下列逻辑语句的Tr ...
- hibernate坑边闲话
使用hibernate各种各样的坑 Remember that ordinal parameters are 1-based node to traverse cannot be null 这两个错误 ...
- session与cookie的区别以及HTML5中WebStorage理解
一.session与cookie的区别 二.HTML5中WebStorage理解 WebStorage的目的是克服由cookie所带来的一些限制,当数据需要被严格控制在客户端时,不需要持续的将数据发回 ...
- [2017BUAA软工助教]第0次作业小结
BUAA软工第0次作业小结 零.题目 作业链接: This is a hyperlink 一.评分规则 本次作业满分10分: 按时提交有分 一周内补交得0分 超过一周不交或抄袭倒扣全部分数 评分规则如 ...