芭芭拉衝鴨 樹的直徑

2021-10-10 17:25:50 字數 910 閱讀 9227

思路:不同型別的點對他進行建邊,等於是將原來的一棵樹斷開了一些邊,成了一片森林,那麼對每棵樹求一下直徑,維護max即可。可以用並查集維護每棵樹內的結點。

#include

using namespace std;

typedef

long

long ll;

const ll mod=

1e9+7;

const

int n=

1e6+50;

int f[n]

;int

find

(int x)

int r,ans;

char c[n]

;bool vis[n]

;int dis[n]

;vector<

int> e[n]

;vector<

int> q[n]

;void

bfs(

int root)}}

}int sum;

void

solve

(int s)

bfs(s)

; ans=0;

for(

auto z:q[s]

)bfs

(r);

sum=

max(sum,ans);}

intmain()

}for

(int i=

1;i<=n;i++

) q[

find

(i)]

.push_back

(i);

for(

int i=

1;i<=n;i++)}

cout

}

線段樹的實現鴨

線段樹的實現 includeusing namespace std define ll long long define db double define max 10000 define rep i,j,k for int i int j i int k i define per i,j,k fo...

SDOI2013 直徑(樹的直徑)

小q最近學習了一些圖論知識。根據課本,有如下定義。樹 無迴路且連通的無向圖,每條邊都有正整數的權值來表示其長度。如果一棵樹有n個節點,可以證明其有且僅有n 1 條邊。路徑 一棵樹上,任意兩個節點之間最多有一條簡單路徑。我們用 dis a,b 表示點a和點b的路徑上各邊長度之和。稱dis a,b 為a...

樹的直徑 板子

不帶解釋版模板o n 常數較大,但是可以知道樹上每一點到直徑端點的距離,這個大多時候都很有用 struct node e maxn 2 ll dis1 maxn dis2 maxn int st,ed,max len void dd int u,int fa,int len,int flag fil...