POJ 2631 求樹的直徑

2021-06-10 02:46:26 字數 1372 閱讀 6659

如何求樹的直徑我就不說了。

ac此題後有兩點感悟:1. 通過邊集來儲存圖(如何查詢) 2. 先想清楚再編碼,否則會一塌糊塗

/*

* poj-2631

* mike-w

* 2012-10-10

* ******************************

* find the diameter of a tree

*/#include#include#include#define maxsize 11111

#define qsize 22222

#define inf 9999999

#define xdisp_graph

#define xfoo_debug

int maxn;

int edge[maxsize][3], head[maxsize], lsize;

int que[qsize], qhead, qtail, qlen;

int tag[maxsize];

int comp(const void *e1, const void *e2)

int build_graph(void)

} return 0;

}int max(int e1, int e2)

#ifdef disp_graph

int disp_graph(void)

putchar('\n');

return 0;

}#endif

int main(void)

build_graph();

#ifdef disp_graph

disp_graph();

#endif

bfs(edge[0][0]);

maxl=0, maxi=0;

for(i=0; i<=maxn; i++)

if(tag[i]>maxl)

maxl=tag[i], maxi=i;

#ifdef foo_debug

printf("one point of the diameter = %d\n", maxi);

#endif

bfs(maxi);

maxl=0;

for(i=0; i<=maxn; i++)

if(tag[i]>maxl)

maxl=tag[i], maxi=i;

#ifdef foo_debug

printf("the other point of the diameter = %d\n", maxi);

#endif

printf("%d\n", maxl-1);

return 0;

}

poj 2631 求樹上的最大距離 基礎題

求樹上的最大距離 方法 任選一點bfs,求出其他點到此點的最短距離,然後選取距離最大的點 此點為最長路的乙個端點 再做一次bfs,然後選取距離最大的點 此點為最長路的另外乙個端點 二者之間的距離即為樹上的最大距離。code include include include include define...

求樹的直徑

歡迎來踩本人部落格 樹的直徑 就是樹上最長路 方法 求兩邊dfs即可 步驟 1.從任意一點進行dfs,然後找到乙個最長路徑,記錄最遠點u 2.然後從u再進行dfs,找最長路徑,記錄一點v。u,v 就是樹的直徑 第四屆藍橋杯a組 證明 我們可以看出圖中,樹的直徑是 4 2 5 長度為9.我們一開始選定...

求樹的直徑

歡迎來踩本人部落格 樹的直徑 就是樹上最長路 方法 求兩邊dfs即可 步驟 1.從任意一點進行dfs,然後找到乙個最長路徑,記錄最遠點u 2.然後從u再進行dfs,找最長路徑,記錄一點v。u,v 就是樹的直徑 第四屆藍橋杯a組 證明 我們可以看出圖中,樹的直徑是 4 2 5 長度為9.我們一開始選定...