HDU4607 求樹中的最長鏈

2021-09-08 09:40:09 字數 696 閱讀 4083

題目:park visit

題意:給定一棵樹,從樹中的任意選乙個頂點出發,遍歷k個點的最短距離是多少?(每條邊的長度為1)

解析:就是求樹的最長鏈,假設求出的樹的最長鏈所包含的點數為m,那麼如果k<=m,那麼答案就是k-1,否則就是(k-m)*2+m-1

#include #include #include using namespace std;

const int n=200010;

int head[n],to[n],next[n],w[n];

int dis[n],que[n];

bool vis[n];

int edge,m,n;

void init()

void add(int u,int v,int c)

void bfs(int s)}}

}int treediameter(int s)

int main()

int ans=treediameter(1);

ans++;

while(m--)

}return 0;

}

HDU4607 求樹中的最長鏈

題目 park visit 題意 給定一棵樹,從樹中的任意選乙個頂點出發,遍歷k個點的最短距離是多少?每條邊的長度為1 解析 就是求樹的最長鏈,假設求出的樹的最長鏈所包含的點數為m,那麼如果k m,那麼答案就是k 1,否則就是 k m 2 m 1 找樹中最長鏈方法是 可以通過經典的o n 的演算法求...

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...