BZ2599(樹分治填坑)

2021-07-22 04:38:34 字數 666 閱讀 8270

第一次寫樹分治.

剛開始被屬於同一分支的點通過根組成的鏈坑了一發.

然後又被陣列下標從零開始坑了一發.

最後陣列大小多寫了個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...