hdu4607雙dfs求樹的直徑 公式

2021-07-31 06:50:38 字數 807 閱讀 4923

**如下

#include 

#include

#include

#include

using

namespace

std;

/*這是我寫的求樹的直徑的最後一種方法,寫完我就去玩

樹形dp了。祝福我吧。

省賽也即將來臨,東北賽也如期而至,希望自己可以打得更好。

以最短的時間複習功課,爭取不掛科就行。

以效率來搶時間。

加油dfs的方法:

先dfs找到最遠的距離,然後從那個點在進行dfs,

這樣就可以找到另乙個解。

*/const

int maxn=100006;

vector

g[maxn];

bool vis[maxn];

int d[maxn];

void add(int a,int b)

int dfs(int s)//求離1最遠的點。

}return0;}

int main()

scanf("%d%d",&m,&n);

for(int i=0;i1;i++)

memset(d,0x3f,sizeof(d));

memset(vis,false,sizeof(vis));

d[1]=0;

dfs(1);

int max1=-99;

int flag=0;

for(int i=1;i<=m;i++)

}return

0;}

hdu 4607 求樹的直徑

分析後就是求樹的直徑兩次bfs即可 證明 樹的直徑是指樹的最長簡單路。求法 兩遍bfs 先任選乙個起點bfs找到最長路的終點,再從終點進行bfs,則第二次bfs找到的最長路即為樹的直徑 原理 設起點為u,第一次bfs找到的終點v一定是樹的直徑的乙個端點 證明 1 如果u 是直徑上的點,則v顯然是直徑...

HDU4607 樹的直徑

樹的直徑的求法,任取一點u為起點,bfs出一條最長路徑,假設此時終點為v,則再次以v為起點,再bfs出一條最長路徑v w。可以得出樹的直徑即為所求。證明略。可以直接bfs或者dfs都行,來發水題 author crazy 石頭 data structure 樹的直徑 created time 201...

樹的直徑 hdu 4607

樹的直徑定義 樹中所有最短路徑的最大值。定義distance a,b 為頂點a與b之間的最短距離。用數學語言表示就是 對於一棵樹 t v,e 彐vx,vy v,v1,v2 v,都有distance v1,v2 distance vx,vy 則把vx到vy的最短路徑稱為樹t的直徑。現在我們來用演算法求...