这道题属于是那种看上去很有思路,然后无从下手,写了个dfs感觉实在是不行。

后面仔细看了一下,这个题是用的构造dfs,基本是树上dfs,时间复杂度是O(V+E)

新构造的一个参数作为根,整个dfs表示这个根的子树已经全部变为黑色(除了根以外)

刚开始是一直搜,搜到最后如果是粉的,递归以后再单独处理一次

其实当时如果能想到直接从每个结点的根结点入手,这个题应该就不在话下了

只能说写着写着心乱了

#include<iostream>
#include<utility>
#include<vector>
using namespace std;
typedef long long ll;
#define fi(i,a,b) for(int i = a; i <= b; ++i)
#define fr(i,a,b) for(int i = a; i >= b; --i)
#define x first
#define y second
#define sz(x) ((int)(x).size())
#define pb push_back
using pii = pair<int,int>;
//#define DEBUG
#define int long long
const int N = 2e5 + 5;
vector<int> tre[N];
int vex[N];
void dfs(int x,int y){
fi(i,0,sz(tre[x])-1){
int v = tre[x][i];
if(v == y) continue;
vex[v] ^= 1;
cout << v << " ";
dfs(v,x);
cout << x << " ";
vex[x] ^= 1;
if(vex[v] == 0)
cout << v << " " << x << " ",vex[v] ^=1 ,vex[x] ^= 1;
}
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(0);
int n;
cin >> n;
fi(i,1,n) cin >> vex[i],vex[i] = max(vex[i],(ll)0);
fi(i,1,n-1){
int a,b;
cin >> a >> b;
tre[a].pb(b);
tre[b].pb(a);
}
cout << 1 << " ";
dfs(1,0);
if(vex[1] == 0)
cout << tre[1][0] << " " << 1 << " " << tre[1][0];
#ifdef DEBUG
//freopen(D:\in.txt,r,stdin);
#endif
return 0;
}

随机推荐

  1. .NET周刊【5月第1期 2024-05-05】

    国内文章 一个开源轻量级的C#代码格式化工具(支持VS和VS Code) https://www.cnblogs.com/Can-daydayup/p/18164905 CSharpier是一个开源. ...

  2. C语言:判断是否为素数,并且打印素数表

    /*     构造素数表, 只需要用数字除以已经判断出来的数是否能整除就行,     不需要除以这个数之前所有的数字,     前提是这个数除以的素数是要比他自己小的      */ 注意一点:int ...

  3. 4G 信令中的 PCO 字段

    目录 文章目录 目录 Protocol Configuration Option Protocol Configuration Option PCO(Protocol Configuration Op ...

  4. AIRIOT答疑第1期 | 零开发基础也能干物联网平台项目?

    当然可以! 物联网低代码平台以零门槛.部署快.灵活性高.满足二次开发等特点,成为近两年来IOT服务的生力军.项目团队即使没有研发人员,也可以像拼乐高一样快速搭建物联网平台,功能全面,满足多数业务场景下 ...

  5. wxpython模块详解

    一.python gui(图形化)模块介绍: Tkinter :是python最简单的图形化模块,总共只有14种组建 Pyqt     :是python最复杂也是使用最广泛的图形化 Wx       ...

  6. 你好Avalonia框架

    https://docs.avaloniaui.net/docs/getting-started/ 起因公司事业部是做移动等营业厅办理相关业务,无纸化系统的.简单的说就是以前去营业厅办理业务都需要各种 ...

  7. 莫烦tensorflow学习记录 (6)卷积神经网络 CNN (Convolutional Neural Network)

    卷积 和 神经网络 莫烦大佬的原文章https://mofanpy.com/tutorials/machine-learning/tensorflow/intro-CNN/ 我的理解就是千层饼,鸡蛋烧 ...

  8. MySQL学习笔记-数据定义语言

    SQL-数据定义语言(DDL) 一.操作数据库 1.查询 # 查询所有数据库 show databases; # 查询当前数据库 select database(); 2.创建 create data ...

  9. boss直聘__zp_stoken__逆向

    声明 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! 目标网站 aHR0cHM6 ...

  10. 深入剖析C++多态的实现与原理-详解

    目录 多态基础 虚函数 虚函数的继承 虚类/虚基类 重写/覆盖 条件: 概念: 多态的条件 其他的多态行为 多态中子类可以不写virtual 协变 代码举例 继承遗留问题解决 析构函数 具体解决方式: ...