第一次寫樹分治.
剛開始被屬於同一分支的點通過根組成的鏈坑了一發.
然後又被陣列下標從零開始坑了一發.
最後陣列大小多寫了個0又mle了一發.
感覺有點難看將就一下吧.
#include #include using namespace std;
const int n=200050,m=1000050;
int n,k;
int gfa,rt,tot,ans=1<<30;
int v[m],e[m];
int d[n],dis[n],dep[n],mxs[n],siz[n];
bool vis[n];
struct edge
};
edge *he[n*2];
queue q;
void grt(int u,int fa)
mxs[u]=max(mxs[u],siz[gfa]-siz[u]);
if (mxs[u]nxt) if (i->v!=fa && !vis[i->v])
}void dfz(int u)
}int main() {
int i,a,b,c;
scanf("%d%d",&n,&k); siz[0]=mxs[0]=n;
for (i=1;i
填坑行動6 樹的重心
目錄對於一棵樹無根樹,找到乙個點,使得把樹變成以該點為根的有根樹時,最大子樹的結點數最小。換句話說,刪除這個點後最大連通塊 一定是樹 的結點數最小。樹的重心不唯一。樹中所有點到某個點的距離和中,到重心的距離和是最小的,如果有兩個重心,他們的距離和一樣。把兩棵樹通過一條邊相連,新的樹的重心在原來兩棵樹...
線段樹(先占個坑,有空去填)
include include include define ll long long define lson l m rt 1 define rson m 1 r rt 1 1 using namespace std const int maxn 611111 ll sum 15 maxn 2 i...
模板篇 伸展樹Splay Tree(此坑待填)
已填坑 請移步 splay?伸展。splay tree?伸展樹。遇事不決問度娘。從前,有種東西叫bst binary search tree,二叉查詢樹 各位都聽說過吧?此bst能較為高效的查詢資料。所以是查詢樹嘛 而它卻有乙個致命的缺點!常常會被卡成一條鏈。不是鏈的時候樹也會很高。效率很難維持住o...