51nod 1405 樹的距離之和

2021-08-28 17:48:43 字數 997 閱讀 1704

1405 樹的距離之和

基準時間限制:1 秒 空間限制:131072 kb

給定一棵無根樹,假設它有n個節點,節點編號從1到n, 求任意兩點之間的距離(最短路徑)之和。

input

第一行包含乙個正整數n (n <= 100000),表示節點個數。

後面(n - 1)行,每行兩個整數表示樹的邊。

output

每行乙個整數,第i(i = 1,2,…n)行表示所有節點到第i個點的距離之和。

input示例

41 2

3 24 2

output示例53

55思路:我們可以先一遍dfs求出每個節點到他的所有子節點的距離和,那麼根節點存的就是他到樹上每個節點的

距離和,這樣根節點的兒子就可以由他轉移過來,就可以求出題目要求的答案來.

**:

#include#define mem(a,b) memset(a,b,sizeof(a))

using namespace std;

typedef long long ll;

const int inf = 0x3f3f3f3f;

const int maxn = 2e5+5;

struct node

e[maxn];

int n;

int head[maxn],len;

int ve[maxn];

ll d[maxn];

void add(int u,int v)

void dfs(int x,int p)

return ;

}void dfs2(int x,int p)

return ;

}int main()

dfs(1,0);

dfs2(1,0);

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

printf("%lld\n",d[i]);

return 0;

}

51nod 1405 樹的距離之和

給定一棵無根樹,假設它有n個節點,節點編號從1到n,求任意兩點之間的距離 最短路徑 之和。input 第一行包含乙個正整數n n 100000 表示節點個數。後面 n 1 行,每行兩個整數表示樹的邊。output 每行乙個整數,第i i 1,2,n 行表示所有節點到第i個點的距離之和。input示例...

51Nod 1405 樹的距離之和

acm模版 根據題意,這是一顆樹,所以每兩點之間的路徑一定是唯一的。這裡讓求所有點到第i個結點的距離和,其實也就是其他所有結點到第i個結點的距離和。通過觀察發現,只要我們找到了乙個點對應的結果,那麼其他所有的點都可以通過這個結果擴充套件出來,利用邊的關係。比如說,我們知道了第乙個結點對應的結果,並且...

51nod 1405 樹的距離之和

給定一棵無根樹,假設它有n個節點,節點編號從1到n,求任意兩點之間的距離 最短路徑 之和。input 第一行包含乙個正整數n n 100000 表示節點個數。後面 n 1 行,每行兩個整數表示樹的邊。output 每行乙個整數,第i i 1,2,n 行表示所有節點到第i個點的距離之和。input示例...