CF-825 G.Tree Queries(DFS)

题目链接

题意

一棵树nnn个节点(初始为白色),两种操作:

  1. 1 xxx 把节点xxx设置为黑色
  2. 2 xxx 求节点xxx到任意一个黑色节点的简单路径上的最小编号的节点

输入ttt和zzz,其中ttt表示操作类型,x=(last+z)%n+1x = (last + z) \% n + 1x=(last+z)%n+1,lastlastlast初始为0,2号操作之后更新lastlastlast

默认第一个操作为1

思路

首先选择第一个黑色节点为根节点生成一棵树,并求出每个节点到根节点经过的最小的编号作为每个点的初始答案a[i]a[i]a[i].

每次新增加一个黑色节点uuu,uuu的子节点的值不会改变,但是其他的点可能通过根节点到u点来得到更加小的答案,每次1操作之后记录下根节点往下能到的最小的节点MINMINMIN,2操作的答案就是min(a[i],MIN)min(a[i], MIN)min(a[i],MIN)

#include <bits/stdc++.h>
const int maxn = 1e6 + 5;
using namespace std;
vector<int> g[maxn];
int a[maxn];
void dfs(int u, int d) {a[u] = d;for (int i = 0; i < (int)g[u].size(); ++i) {int v = g[u][i];if (a[v]) continue;dfs(v, min(d, v));}
}
int main() {int n, q;scanf("%d %d", &n, &q);for (int i = 1; i < n; ++i) {int u, v;scanf("%d %d", &u, &v);g[u].push_back(v);g[v].push_back(u);}int last = 0, op, d;scanf("%d %d", &op, &d); d = (d + last) % n + 1;dfs(d, d);int tmp = d;while (--q) {scanf("%d %d", &op, &d);d = (d + last) % n + 1;if (op == 1) tmp = min(tmp, a[d]);else {last = min(tmp, a[d]);printf("%d\n", last);}}return 0;
}

CF-825 G.Tree Queries(DFS)相关推荐

  1. Educational Codeforces Round 25 G. Tree Queries

    题目链接:Educational Codeforces Round 25 G. Tree Queries 题意: 给你一棵树,一开始所有的点全是黑色,有两种操作. 1 x 将x这个点变为黑色,保证第一 ...

  2. CodeForces - 1328E Tree Queries(dfs序/LCA)

    题目链接:点击查看 题目大意:给出一棵以点 1 为根节点的树,接下来有 m 次询问,每次询问给出 k 个点,题目问我们能否找到一个点 u ,使得从根节点到点 u 的简单路径,到 k 个点的每个点的距离 ...

  3. Codeforces Round #316 (Div. 2) D. Tree Requests dfs序

    题目链接: 题目 D. Tree Requests time limit per test:2 seconds memory limit per test:256 megabytes 问题描述 Rom ...

  4. E:Tree Queries(假树链剖分写法)

    博客园地址 E:Tree Queries 思路 当我写完A完这道题后,百度了一下,发现好像没有人是用类树链剖分来写的,都是LCALCALCA,于是我就来水一篇树链剖分题解了. 第一步:贪心取点 我们可 ...

  5. cf #825 Div.2(A~C2)

    Cf #825 Div.2 文章目录 Cf #825 Div.2 [A. Make A Equal to B](https://codeforces.com/contest/1736/problem/ ...

  6. 树链剖分 or 根号分治 + dfs序 + 树状数组 ---- CF1254 D. Tree Queries

    题目链接 题目大意: 问题转化: 很容易发现:假设修改的节点是vvv. 1.vvv的子树sonvson_vsonv​直接加上(n−size[sonv])n×d\frac{(n-size[son_v]) ...

  7. LCA ---- E. Tree Queries[LCA或者dfs序的解法]

    题目链接 题目大意:就是给你一颗树,然后qqq次询问每次询问会给出kkk个点,要求你判断一下这些点是否在存在一条从1到某个点u的链使得这k个点都在这条链上或者距离这条链距离为1的位置上 解法1:dfs ...

  8. Codeforces 375D - Tree and Queries(dfs序+莫队)

    题目链接:http://codeforces.com/contest/351/problem/D 题目大意:n个数,col[i]对应第i个数的颜色,并给你他们之间的树形关系(以1为根),有m次询问,每 ...

  9. CF 678F Lena and Queries

    一个空集,有 n(≤30w) n(≤30w)个操作: 1)集合加入对 (a,b)(−109≤a,b≤109) (a,b)(-10^9≤a,b≤10^9) 2)移除 ith i_{th}操作加入的对 3 ...

最新文章

  1. VS2010非永久性配置和永久配置Opencv
  2. 如何部署深度学习模型?
  3. 水晶报表主子报表分页问题
  4. 几款常用的编辑器介绍,给刚入门学Web前端的人
  5. mysql表空间转移_mysql共享表空间扩容,收缩,迁移
  6. Mybatis中Mapper.xml文件sql中动态获取----#{}和${}区别
  7. linux系统修复找不到原安装,Linux 系统用安装盘来修复GRUB 详解
  8. negative binomial(Pascal) distribution —— 负二项式分布(帕斯卡分布)
  9. python快速开发框架_GitHub - lee2029/pyui4win: 一个用python实现业务逻辑、用xml和html/css/js描述界面的windows程序的快速开发框架...
  10. 穿过已知点画平滑曲线-lua
  11. 解决Java下载Zip压缩文件,解压后报不可预料的压缩文件末端
  12. android html footer 固定,footer保持在页面底部的两种方法
  13. 计算机硬件环境指啥,硬件环境指的是什么呢?
  14. OpenGL LookAt、Camera摄像机
  15. AVD模拟器一直处于开机状态打不开的解决办法
  16. PDPS教程:机器人气动点焊焊枪大开与小开运动状态自动切换设置
  17. 记录一次h5上传身份证照片、上传人面像
  18. How to design an FPGA from scratch-1_FPGA_8_24
  19. 刚刚,2022中科院分区表发布(附下载)
  20. 窗口过程,窗口过程函数

热门文章

  1. C#操作项目配置文件
  2. Unreal Engine 4 —— 冷却UI的制作
  3. Java知多少(96)绘图之设置字型和颜色
  4. Jquery Mobile 百度地图 Demo
  5. 如何使用DNN中的Calendar控件
  6. 十进制转二进制、二进制转十进制
  7. Swift之深入解析如何避免单元测试中的强制解析
  8. HarmonyOS之深入解析线程管理
  9. HarmonyOS之常用组件Button的功能和使用
  10. 计算机网络可被理解为( )