|–>传送门<–|

题目大意

给定一颗nnn个节点的树,可以从任意一个点开始dfsdfsdfs,求最小字典序的后续遍历。

题解

首先,对于字典序最小的要求,我们一定是从叶结点中的最小值开始遍历的。我们可以记录每个节点的度,然后倒序寻找度为111的节点。

然后,我们对当前节点uuu进行讨论,我们有两种策略:

  • 认为当前节点不是根节点:先将子树按最小权排序。如果发现当前子树中的最大最小值小于uuu,那么显然此时输出uuu不是最优策略,所以此时应当先dfsdfsdfs第kkk个子树(当作父节点向上走),再将uuu加入答案。否则就先遍历前k−1k - 1k−1个子树,然后将uuu加入答案,再遍历最后一个子树;
  • 认为当前节点是根节点:先将子树按最小权排序,然后按照最小叶序依次dfsdfsdfs子树,最后将uuu加入答案。

可以发现在dfsdfsdfs时需要记录搜索的顺序,从而确定是否可以将子树作为父节点向上走。

#include <bits/stdc++.h>
#define int long long
using namespace std;const int N = 2e5 + 10, INF = 1e9 + 7;
vector<int> g[N], ans;#define pii pair<int, int>
#define mkp make_pair
#define fir first
#define sec secondint deg[N], w[N];inline void solve(){ans.clear();int n = 0; std::cin >> n;for(int i = 1; i <= n; i++) deg[i] = 0;for(int i = 0; i <= n + 1; i++) g[i].clear();for(int i = 1, u, v; i <= n - 1; i++){cin >> u >> v;g[u].emplace_back(v);g[v].emplace_back(u);deg[u]++, deg[v]++;}function<void(int, int)> getmin = [&](int u, int fa){bool flag = true;w[u] = INF;for(auto nxt : g[u]){if(nxt == fa) continue;flag = false;getmin(nxt, u);w[u] = min(w[u], w[nxt]);}if(flag) w[u] = u;};function<void(int, int, int)> dfs = [&](int u, int fa, int dir){vector<pii> sot;for(auto v : g[u]){if(v == fa) continue;sot.emplace_back(mkp(w[v], v));}if(!sot.size()) { ans.emplace_back(u); return; }sort(sot.begin(), sot.end());if(dir == 0){for(auto x : sot) dfs(x.sec, u, 0);ans.emplace_back(u);} else {for(int i = 0; i < sot.size() - 1; i++) dfs(sot[i].sec, u, 0);if(u > sot.back().fir) dfs(sot.back().sec, u, 0), ans.emplace_back(u);else ans.emplace_back(u), dfs(sot.back().sec, u, 1);}}; int st = 0;for(int i = n; i >= 1; --i) if(deg[i] == 1) st = i;getmin(st, 0);dfs(st, 0, 1);for(auto x : ans) cout << x << ' ';cout << "\n";
}signed main(){ios_base::sync_with_stdio(false), cin.tie(0), cout.tie(0);int t = 0; std::cin >> t;while(t--) solve();return 0;
}

2021 ICPC Southeastern Europe Regional Contest 树上dfs+思维相关推荐

  1. 2021 ICPC Southeastern Europe Regional Contest Werewolves(树上背包)

    2021 ICPC Southeastern Europe Regional Contest Werewolves(树上背包) 链接 题意:给出一个n个节点的树(n≤3000n\le3000n≤300 ...

  2. 2021 ICPC Southeastern Europe Regional Contest(更新至六题)

    2021 ICPC Southeastern Europe Regional Contest A题签到 A. King of String Comparison 题意:给两个字符串,找出有多少对(l, ...

  3. 2021 ICPC Southeastern Europe Regional Contest ABFGJKLN

    |–>传送门<–| A. King of String Comparison 双指针 给定字符串AAA和BBB,计算满足Asub[l,r]A_{sub[l, r]}Asub[l,r]​字典 ...

  4. 【题目记录】——The 2021 ICPC Asia Jinan Regional Contest

    文章目录 C Optimal Strategy 组合数 H Game Coin K Search For Mafuyu 欧拉序列 题目集地址 The 2021 ICPC Asia Jinan Regi ...

  5. ICPC Central Europe Regional Contest 2019 K. K==S(AC自动机+矩阵快速幂)

    Progressive hard octave rock tunes (so-called "phorts") are written using a specifific mus ...

  6. 2020-2021 ICPC Southeastern European Regional Programming Contest (SEERC 2020)

    2020-2021 ICPC Southeastern European Regional Programming Contest (SEERC 2020) B. Reverse Game 题目描述: ...

  7. The 2019 ICPC Asia Shanghai Regional Contest

    The 2019 ICPC Asia Shanghai Regional Contest 题号 题目 知识点 A Mr. Panda and Dominoes B Prefix Code C Maze ...

  8. 2018 ICPC Asia Jakarta Regional Contest

    2018 ICPC Asia Jakarta Regional Contest 题号 题目 知识点 难度 A Edit Distance B Rotating Gear C Smart Thief D ...

  9. The 2021 ICPC Asia Regionals Online Contest (I)

    The 2021 ICPC Asia Regionals Online Contest (I) 写了一晚上,日- 文章目录 一. A Busiest Computing Nodes 二.D Edge ...

最新文章

  1. 链表问题16——单链表的选择排序(python版本)
  2. SAP QM 权限控制可以到Inspection Type上
  3. 关于ie6下提交上传表单的注意事项
  4. 微软推出了一款能帮你“做题”的数学应用
  5. mysql数据库表的类型介绍,mysql数据库表的类型介绍
  6. matlab 求向量的交集_从零开始的matlab学习笔记——(16)函数绘图
  7. Python+OpenCV:图像对比度受限自适应直方图均衡化(CLAHE, Contrast Limited Adaptive Histogram Equalization)
  8. print( )函数调用——pytnon小练
  9. 计算机录入技术五笔输入法教案,五笔打字教案
  10. CSS背景颜色之奇技淫巧
  11. 嵌入式开发系统的简介
  12. cmd查看自己的CPU参数
  13. C语言确定某年星期六,c语言 怎么算某年某月某日是星期几啊?
  14. 网页yy语音(歪歪语音) 网页版
  15. python qt是什么_初识Python与Qt
  16. 什么是802.11ac和802.11ac Wave2
  17. 电脑技术分享:电脑怎样录制桌面视频
  18. 农用地包括哪些地类_农用地、基本农田、建设用地,不同类型的土地性质要怎么利用...
  19. 基于SSH的计算机在线测评考试系统
  20. 14 EXCEL仪表盘制作1

热门文章

  1. expect命令简介及使用案例
  2. WebStorm破解补丁激活
  3. 微信小程序转发自定义图片
  4. 图文讲解如何使用QQ企业邮箱绑定域名开通企业邮箱(使用时代互联的域名管理后台)
  5. 3c认证是什么,3c认证产品范围与认证材料
  6. 网络工程师的就业前景如何?市场需求如何?
  7. WHO IS MVP ?——线程
  8. 关于万门大学的《理论物理一个月特训》课程
  9. 移动适配-vw/wh
  10. MKS Robin nano V3.0 主板使用Klipper固件教程