樹的直徑(兩個bfs)

2022-03-05 18:45:26 字數 725 閱讀 2796

樹的直徑:樹中的最長鏈

具體思路:隨便找乙個點bfs,然後找到最長的鏈,然後再以找到的點作為起點進行bfs,然後找到的最長的鏈就是樹的直徑。

ac**:

#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;

# define ll long long

# define inf 0x3f3f3f3f

# define maxn 10000+100

struct node

edge[maxn];

int head[maxn],num;

int dis[maxn];

int vis[maxn];

int maxx;

void addedge(int fr,int to,int cost)

int bfs(int t)

q.push(u);}}

}return index;

}int main()

while(~scanf("%d%d%d",&u,&v,&w))

int temp=bfs(1);

bfs(temp);

printf("%d\n",maxx);

return 0;

}

樹的直徑(兩個bfs)

樹的直徑 樹中的最長鏈 具體思路 隨便找乙個點bfs,然後找到最長的鏈,然後再以找到的點作為起點進行bfs,然後找到的最長的鏈就是樹的直徑。ac include include include include include include include include include inclu...

NEFU 1301 樹的直徑 bfs

problem 1301 time limit 1000ms memory limit 65535k 樹的直徑是指樹的最長簡單路。我們通常通過兩遍bfs or dfs得到。即先任選乙個起點bfs or dfs找到最長路的終點,再從終點進行bfs or dfs,則第二次找到的最長路即為樹的直徑。現給出...

兩次BFS求樹的直徑 演算法導論22 2 7

以任意點w開始,先做一次bfs,找到最遠的點v,然後再以此點v進行一次bfs,找到最遠的點為u,u到v就是樹的直徑。此問題的關鍵不是在程式設計,而是要證明,網上也找了很多資料,沒有看到證明,以下是個人的證明方法。首先要知道樹是沒有環路的連通圖,任意兩點都有一條通路,而且也只有一條通路。同時假設樹的一...