
虚树
nike0good
这个作者很懒,什么都没留下…
展开
-
CF 592D(Super M-虚树直径)
给定一棵树,找一条路,要求经过指定的树上k个点,使路程最小 求起点最小编号,与路程我们把树的无用点扔掉,剩下虚树, 要经过它的每一个点,则起点s,终点t,路程显然为2∗m−diss,t(m=边数)2*m-dis_{s,t} (m=边数) 现在要求max(diss,t)max(dis_{s,t}),就是树的直径(怎么开心怎么求)。寻找编号最小点: 由于树的直径必然会经过树的重心,求出树的重心并原创 2015-11-19 19:16:38 · 1062 阅读 · 1 评论 -
Wannafly模拟赛4
A Treepath 给定一棵n个点的树,问其中有多少条长度为偶数的路径。路径的长度为经过的边的条数。x到y与y到x被视为同一条路径。路径的起点与终点不能相同。#include<bits/stdc++.h> using namespace std;#define For(i,n) for(int i=1;i<=n;i++)#define Fork(i,k,n) for(int i=k;i原创 2017-10-14 04:08:56 · 594 阅读 · 0 评论 -
CCPC-Wannafly Winter Camp Day5 (Div1, onsite)(Nested Tree-虚树)
你有一棵n个点树T,然后你把它复制了m遍,然后在这m棵树之间又加了m−1条边,变成了一棵新的有nm个点的树T_2。求T_2中所有点对的距离和,由于答案很大,对10^9+7取模。1≤n≤1051\le n \le 10^51≤n≤105dp 套 dp预处理dpsum[x]dpsum[x]dpsum[x],表示所有1棵n个点的树中,所有点到点xxx的距离和。在m个点连成的新树中,每个拷贝和父拷...原创 2019-01-25 11:47:18 · 546 阅读 · 0 评论