#P9963. 树论(二)
树论(二)
树论(二)
Problem Description
Yoshinow又得到了一棵 个结点的树,结点的标号为 到 内的整数,Yoshinow突发奇想:如果把树上的一条边删掉后, 一棵树会被划成两棵树 ,从 的节点编号中选一个数 ,再从 的结点编号中选一个数 , 最大能取到多少? 因为Yoshinow非常好奇,所以他想对每条边都询问。 **形式化地说:**有一棵树 , , 条边 . 对每条边 ,需要回答:将 删去后,原树 会被分成不连通的两棵树 , 此时 是多少
Input
第一行一个正整数 ,表示测试用例组数,. 接下来 组数据,对每组数据:先输入一个正整数 ,表示树的点数, ,接下来 行,第 行包括两个整数 ,表示树上的第 条边为 . 保证对所有测试用例,.
Output
对每个测试用例,输出一行 个整数,第 个整数表示删除边 后的答案。 注:在这题中你可能需要用到更大的栈空间,C++选手可以在main函数中加入如下代码,以防出现栈溢出的错误:
int main() {
int size(256<<20); //256M
__asm__ ( "movq %0, %%rsp\n"::"r"((char*)malloc(size)+size));
// YOUR CODE
//...
exit(0);
}
Sample Input
2
3
1 2
2 3
4
1 2
2 3
2 4
Sample Output
1 1
1 1 2
Hint
两个样例如下图所示:
红边表示询问的边,选取的点 对应地用浅蓝色和橙色标注。在样例中,除了第二棵树的 以外,其他询问中的无序对 的选取方式都不唯一。
Source
2024“钉耙编程”中国大学生算法设计超级联赛(5)