摘要: 一眼树的直径。 题意 给出N个结点与N-1条边,问:它们能否形成一棵N个结点的树?如果能,则从中选出结点作为树根,使得整棵树的高度最大。输出所有满足要求的可以作为树根的结点。 思路 当图连通时,由于题目保证只有N-1条边,因此一定能确定是一棵树,下面的任务就是选择合适的根结点,使得树的高度最大。具体 阅读全文
posted @ 2021-01-25 23:06 Dazzling! 阅读(58) 评论(0) 推荐(0) 编辑
摘要: 树的直径的模板题。 从任意一个节点出发(以$1$号点为例),找出距离$1$号点最远的点$p$,$p$为直径的一个端点 将$d[p]$清$0$,找出距离$p$最远的点$q$,\((p, q)\) 即为直径的两个端点,$d[q]$即为树的直径长度 const int N=10010; vector<in 阅读全文
posted @ 2021-01-25 21:42 Dazzling! 阅读(49) 评论(0) 推荐(0) 编辑
摘要: 鬼畜读入。。。 stringstream的使用 如果多条路径和相同的话,输出叶子结点上值较小的一个。 const int N=10010; string inorder,postorder; int in[N],post[N]; int pos[N]; int n; int minsum; int 阅读全文
posted @ 2021-01-25 17:38 Dazzling! 阅读(39) 评论(0) 推荐(0) 编辑
摘要: 给定后序中序求先序,树中每个结点的值各不相同。 unordered_map<char,int> pos; string in,post; int n; void build(int inl,int postl,int n) { if(!n) return; char root=post[postl+ 阅读全文
posted @ 2021-01-25 10:48 Dazzling! 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 根据先序和中序确定后序。树中每个结点的值都是不同的,不需要特判了。 递归构造完左右子树后输出根即为后序。 string pre,in; unordered_map<char,PII> tree; unordered_map<char,int> pos; int build(int prel,int 阅读全文
posted @ 2021-01-25 09:34 Dazzling! 阅读(80) 评论(0) 推荐(0) 编辑