「CodeForces - 717E」Paint it really, really dark gray (dfs)
BUPT 2017 summer training (for 16) #1H
题意
每个节点是黑色or白色,经过一个节点就会改变它的颜色,一开始在1节点。求一条路径使得所有点变成黑色。
题解
dfs时每个节点的孩子处理完,这时候如果颜色是白色,那么再去一下父亲节点再回来,就变成黑色了。
如果是1号点,那就去它的孩子节点,再回来,再去它孩子节点。
代码
#include <cstdio>
#define N 200005
struct edge{
int to,next;
}e[N<<1];
int head[N],cnt;
int n,a[N];
void add(int u,int v){
e[++cnt]=(edge){v,head[u]};
head[u]=cnt;
}
int ans[N<<1],top;
void dfs(int x,int fa){
ans[++top]=x;
a[x]*=-1;
for(int i=head[x];i;i=e[i].next){
int v=e[i].to;
if(v==fa)continue;
dfs(v,x);
ans[++top]=x;
a[x]*=-1;
}
if(a[x]==-1){
if(x!=1){
ans[++top]=fa;
a[fa]*=-1;
ans[++top]=x;
a[x]=1;
}else{
ans[++top]=e[head[1]].to;
ans[++top]=1;
ans[++top]=e[head[1]].to;
}
}
}
int main(){
scanf("%d",&n);
bool ex=0;
for(int i=1;i<=n;++i){
scanf("%d",&a[i]);
if(a[i]==-1)
ex=1;
}
for(int i=1,u,v;i<n;++i){
scanf("%d%d",&u,&v);
add(u,v);add(v,u);
}
if(!ex)printf("1");
else{
a[1]*=-1;
dfs(1,0);
for(int i=1;i<=top;++i)
printf("%d ",ans[i]);
}
return 0;
}
「CodeForces - 717E」Paint it really, really dark gray (dfs)的更多相关文章
- 「LINUX资料」简单实用命令less和vi(三)
- 「日常训练」Jin Yong’s Wukong Ranking List(HihoCoder-1870)
题意与分析 2018ICPC北京站A题. 题意是这样的,给定若干人的武力值大小(A B的意思是A比B厉害),问到第几行会出现矛盾. 这题不能出现思维定势,看到矛盾就是矛盾并查集--A>B.A&g ...
- 「日常训练」湫湫系列故事——设计风景线(HDU-4514)
题意与分析 中文题目,木得题意的讲解谢谢. 然后还是分解成两个任务:a)判环,b)找最长边. 对于这样一个无向图,强行转换成负权然后bellman-ford算法求最短是难以实现的,所以感谢没有环--我 ...
- LOJ#2409. 「THUPC 2017」小 L 的计算题 / Sum(生成函数)
题意 给定一个长为 \(n\) 的序列 \(\{a_i\}\) 对于 \(k \in [1, n]\) 求 \[ f_k = \sum_{i = 1}^{n} a_i^k \pmod {9982443 ...
- Codeforces Round #394 (Div. 2) E. Dasha and Puzzle(dfs)
http://codeforces.com/contest/761/problem/E 题意:给出一棵树,现在要把这棵树上的结点放置在笛卡尔坐标上,使得每一条边与x轴平行或者与y轴平行.输出可行解,即 ...
- Paint it really, really dark gray CodeForces - 717E
Paint it really, really dark gray CodeForces - 717E 题意 有一棵树 每个结点是粉色或黑色 每经过一个结点 就改变他的颜色 从1开始遍历 打印出一条路 ...
- 「翻译」Unity中的AssetBundle详解(二)
为AssetBundles准备资源 使用AssetBundles时,您可以随意将任何Asset分配给所需的任何Bundle.但是,在设置Bundles时,需要考虑一些策略.这些分组策略可以使用到任何你 ...
- 「翻译」Unity中的AssetBundle详解(一)
AssetBundles AssetBundle是一个存档文件,其中包含平台在运行时加载的特定资产(模型,纹理,预制,音频剪辑,甚至整个场景).AssetBundles可以表示彼此之间的依赖关系;例如 ...
- 微信小程序 「柒留言」 — 实现微信公众号留言功能(限时免费入驻,建议收藏)
「柒留言」小程序留言助手使用指南(接近原生界面) 前言 从去年 3 月以后新公众号就没得留言功能了,新申请的微信公众号没有留言功能,没有留言就无法跟读者进行互动,写出去的文章得不到反馈,着实感觉有蛮难 ...
随机推荐
- Less or Equal CodeForces - 977C (sort+细节)
You are given a sequence of integers of length nn and integer number kk. You should print any intege ...
- Day2 Numerical simulation of optical wave propagation之标量衍射理论基本原理(二)
2.麦克斯韦方程组的简单行波解 讨论通过线性.各向同性.均匀.无色散.无限电荷和电流的电介质材料的光波传输.在这种情况下,介质具有如下属性: (1)推导获得波动方程( 由麦克斯韦方程组导出的.描述电磁 ...
- 【学习总结】Git学习-参考廖雪峰老师教程四-时光机穿梭
学习总结之Git学习-总 目录: 一.Git简介 二.安装Git 三.创建版本库 四.时光机穿梭 五.远程仓库 六.分支管理 七.标签管理 八.使用GitHub 九.使用码云 十.自定义Git 期末总 ...
- spring遇到的Error applying BeanValidation relational constraints
spring3.1+hibernate4集成测试时遇到的问题: log4j:WARN No appenders could be found for logger (org.springframewo ...
- babel (二) update to v7
一.rootmode In 7.1, we've introduced a rootMode option for further lookup if necessary. 二.Remove prop ...
- react-router的坑
componentWillReceiveProps(nextProps){ 在改钩子函数里接受组件变化的最近的传递的props 如果在这里没有使用nextprops 而是调用this.props 会出 ...
- 解决ERROR 1130: Host '192.168.11.1' is not allowed to connect to this MySQL
使用navicat进行远程登录MySQL时,报出 ERROR 1130: Host '192.168.11.1' is not allowed to connect to this MySQL se ...
- 剑指offer(6)
题目: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转 ...
- B站弹幕姬(🐔)分析与开发(下篇)
接上篇 下面开始分析弹幕信息: 当我们在完成和服务器的握手之后,b站的弹幕服务器就会开始不停的开始给我们推送相关房间的弹幕消息了.老规矩前面16个字节是这个包的相关信息,我们先来看下这条消息的前面16 ...
- 新版本macos无法安装mysql-python包
在更新了macos之后就发现无法正确安装python-mysql包了. 上网查阅了一下应该是c库或者osx的基础工具变动带来的问题.看到很多解决办法说使用pymysql,拜托我问的是如何安装pytho ...