社区讨论

急急急,求代码

题目总版参与者 2已保存回复 6

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
5 条
当前快照
1 份
快照标识符
@loj6kycc
此快照首次捕获于
2023/11/04 06:22
2 年前
此快照最后确认于
2023/11/04 10:21
2 年前
查看原帖
快来看看这题怎么做啊

DFS序

题目描述

给你一棵 nn 个节点的以 1 号节点为根的树,节点的编号为 1 到 nn.
我们想从根节点出发,深度优先遍历(DFS)这棵树。 我们想知道对于任意节点 vv, 它最前和最后分别可以出现在 DFS 序的哪个位置。DFS 序指的是在 DFS 过程中访问节点的顺序。一个节点出现在 DFS 序的第 jj 个位置意味着在访问这个节点前我们恰好访问了 j1j-1 个其他节点。
下面是有根树 DFS 的伪代码,程序执行完毕后, dfs_order 记录了这棵树的 DFS 序。
CPP
初始 dfs_order 为空

def dfs(vertex x):
    把 x 加到 dfs_order 的末尾
    for (x 的每个子节点 y): //注意,我们可以按照任意顺序枚举子节点
        dfs(y)

dfs(root)

输入格式

第一行输入一个正整数 ? 表示数据组数。
对于每组数据,第一行一个正整数 ? 表示节点数。接下来 ?−1 行,每行两个正整数 ?,?,表示 ? 号节点是 ? 号节点的父亲节点。 数据保证读入的是一棵以 1 号节点为根的树。

输出格式

对于每组数据,输出对应的 ? 行,第 ? 行两个整数表示 ? 号节点最前和最后分别可以出现在 DFS 序的哪个位置。

样例输入

CPP
2
4
1 2
2 3
3 4
5
1 2
2 3
2 4
1 5

样例输出

CPP
1 1
2 2
3 3
4 4
1 1
2 3
3 5
3 5
2 5

数据规模

对于 30% 的数据,保证 1T,n101 \le T,n \le 10
对于 100% 的数据,保证 1n1051 \le n \le 10^5, 1x,yn1 \le x,y \le n,所有数据的 nn 相加不超过 10610^6

回复

6 条回复,欢迎继续交流。

正在加载回复...