「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 月以后新公众号就没得留言功能了,新申请的微信公众号没有留言功能,没有留言就无法跟读者进行互动,写出去的文章得不到反馈,着实感觉有蛮难 ...
随机推荐
- D. Nastya Is Buying Lunch
链接 [https://codeforces.com/contest/1136/problem/D] 题意 有N个人,a[i]表示第i个人的编号,m个二元组. 当前一个在后一个的前面一个位置时二者可以 ...
- p151开映射札记
1. 如何理解这句话? 2.连续有什么用? 3.为什么区间包含,经过算子T还是包含? 谢谢 谢谢学长 我懂了 1.2. 3有点儿模糊 1.连续等价于开集原像是开集,而可逆算子的逆的原像就是的 ...
- VMware威睿
VMware总部位于美国加州帕洛阿尔托 [1] ,是全球云基础架构和移动商务解决方案厂商,提供基于VMware的解决方案, 企业通过数据中心改造和公有云整合业务,借助企业安全转型维系客户信任 [2- ...
- 使用HttpUtils完成Http Basic 认证
调用声网(agora)的远程接口(Restful Api)时,对方需要使用Basic Auth的方式进行认证(需要输入用户名和密码). 一,使用Postman完成基于Basic Auth的Http认证 ...
- 09-babel
这个是解析我们es6的代码的,为什么要用它呢,因为对于一些ie浏览器,甚至FF浏览器,低版本的还不能识别我们的es6代码,那么vue里面好多还让我们去写es6的代码,这个时候我们就可以用babel这个 ...
- Kernel Functions-Introduction to SVM Kernel & Examples - DataFlair
Kernel Functions-Introduction to SVM Kernel & Examples - DataFlairhttps://data-flair.training/bl ...
- linux下jenkins的时区设置问题
https://blog.csdn.net/king_wang10086/article/details/76178711 [root@jenkins ~]# yum install -y ntpda ...
- MYSQL 表大小限制
MySQL 3.22限制的表大小为4GB.由于在MySQL 3.23中使用了MyISAM存储引擎,最大表尺寸增加到了65536TB(2567 – 1字节).由于允许的表尺寸更大,MySQL数据库的最大 ...
- Oracle 用户管理与权限分配
用户管理是系统管理员最基本的任务之一,用户想要连接数据库并且使用相应的系统资源就必须是系统的合法用户且具有对应的权限. 1 创建用户 default tablespace default_tables ...
- CSS3 background-size属性兼容
background-size是CSS3新增的属性,但是IE8以下还是不支持 background-size:contain; // 缩小图片来适应元素的尺寸(保持像素的长宽比):background ...