poj4607 樹的直徑)

2021-06-23 05:10:48 字數 942 閱讀 7474

題目:park visit

題意:乙個人去公園,想走k個景點,問最短的距離。

思路:求出樹的直徑(最長的鏈、最長路徑)。從任意點a,找到離a最遠點b。再找到離b最遠點c,bc就是最長路徑。如果k**:

#include #include #include #include #include #include #include #include #include #include #include using namespace std;

#define for(i,a) for(i=0;i=b;i--)

#define clr(ar,vel) memset(ar,vel,sizeof(ar))

#define pb push_back

#define maxint 0x7fffffff

const int maxn = 100010;

int t, n, m, k;

int m, n, maxd;

int from, to;

vector g[maxn];

bool vis[maxn];

inline void add_edge(int from, int to)

int dfs(int x, int d)

for(int i = 0; i < g[x].size(); i ++)

vis[x] = 0;

return res;

}int solve()

int main()

// system("pause");

solve();

maxd ++;

// cout << "maxlen " << maxlen << endl;

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

} return 0;

}

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的直徑。現在我們來用演算法求...

hdu 4607 求樹的直徑

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