题意:给你一棵树, 只能删度数为偶数的点, 问你能不能将整个图删完, 如果能输入删除的顺序。

思路:对于一棵树来说, 如果里面的点的个数是偶数个则肯定不可能, 偶数个点有奇数条边,而你每次删只能删偶数条边。

那么我们对于每个父亲儿子来说, 如果儿子的子树的大小为奇数, 那么肯定先删父亲, 反之先删儿子, 建立关系图, 跑一遍拓扑序就好啦。

 #include<bits/stdc++.h>
#define LL long long
#define fi first
#define se second
#define mk make_pair
#define pii pair<int,int>
#define ull unsigned long long
using namespace std; const int N=1e6+;
const int M=+;
const int inf=0x3f3f3f3f;
const LL INF=0x3f3f3f3f3f3f3f3f;
const int mod=1e9 + ; vector<int> edge[N], e[N], ans;
int n, cnt[N], deg[N];
int vis[N];
void dfs(int u ,int pre) {
cnt[u] = ;
for(int v : edge[u]) {
if(v == pre) continue;
dfs(v, u);
cnt[u] += cnt[v];
}
} bool dfs2(int u) {
vis[u] = -;
for(int v : e[u]) {
if(vis[v] == -)
return false;
if(!vis[v] && !dfs2(v))
return false;
}
vis[u] = ;
ans.push_back(u);
return true;
} void dfs3(int u, int pre) {
for(int v : edge[u]) {
if(v == pre) continue;
if(cnt[v] % ) {
e[u].push_back(v);
deg[v]++;
} else {
e[v].push_back(u);
deg[u]++;
}
dfs3(v, u);
}
} int main() {
scanf("%d", &n);
for(int i = ; i <= n; i++) {
int fa; scanf("%d", &fa);
if(fa) {
edge[fa].push_back(i);
edge[i].push_back(fa);
}
}
if(n % == ) {
puts("NO");
return ;
} dfs(, );
dfs3(, ); for(int i = ; i <= n; i++) {
if(vis[i]) continue;
if(!dfs2(i)) {
puts("NO");
return ;
}
}
puts("YES");
for(int i = ans.size() - ; i >= ; i--)
printf("%d\n", ans[i]);
return ;
}
/*
*/

最新文章

  1. 总结-Hibernate
  2. 如何启动app时全屏显示Default.png(图片)?
  3. IOS 支付、性能调试、IPv6兼容支持等
  4. Spring Collections XML 配置
  5. Android开发如何去除标题栏title
  6. Oracle EBS Report 输出字符字段前部"0"被Excel自动去掉问题
  7. iOS菜鸟之FMDB的二次封装简单易用
  8. 关于float与double
  9. sass基础学习
  10. go语言初体验
  11. angular学习(六)-- Filter
  12. 工作中遇到的问题——mysql关于年龄,性别的统计
  13. SSM-Netty实现软硬件通信,真实项目案例
  14. 待解决问题 :JDBC indexInsert.addBatch(); 为什么不生效 PSTM
  15. ELM:ELM实现鸢尾花种类测试集预测识别正确率(better)结果对比—Jason niu
  16. day10,11练习
  17. 【libreoffice】libreoffice实现office转pdf、html、jpg等格式数据
  18. lesson8-图像问答-小象cv
  19. HTML 内 meta标签
  20. 【Java】须要配置的三个Java环境变量

热门文章

  1. NOIP2018TG 初赛复习
  2. WEB入门之十一 JS面向对象
  3. 基于Maven构建Web项目
  4. jQuery源码之 empty与html(&#39;&#39;)的区别
  5. Eclipse中创建java类的时候自动设置作者信息和创建时间
  6. 输入一个十进制的数到dx_ax,然后十六进制转十进制输出
  7. vue.js初识(一)
  8. 最长回文子串问题-Manacher算法
  9. POJ - 1753 Flip Game(状压枚举)
  10. [Apio2012]dispatching 左偏树做法