floyd+列舉
看點:1.floyd同時用陣列p記錄轉移節點k,這樣知道線段的端點u v就可以得到整條線段
2.任意一點c到線段a b的距離=(d[a][c]+d[c][b]-d[a][b])/2
3.列舉直徑st en的所有子線段a b:
for(int a=en;a;a=p[st][a])
for(int b=a;b;b=p[st][b])
**:
#include#include#define size 305
using
namespace
std;
intn,s;
int num=0
;int ans=0x3f3f3f3f
;int
d[size][size];
intp[size][size];
struct
pathg[size*size];
int cnt=0
;int
main()
for(int k=1;k<=n;k++)}}
}for(int i=1;i<=n;i++)}}
for(int i=1;i<=cnt;i++)
ans=min(ans,dis);}}
}cout
}
樹網的核(codevs 1167)題解
設t v,e,w 是乙個無圈且連通的無向圖 也稱為無根樹 每條邊到有正整數的權,我們稱t為樹網 treebetwork 其中v,e分別表示結點與邊的集合,w表示各邊長度的集合,並設t有n個結點。路徑 樹網中任何兩結點a,b都存在唯一的一條簡單路徑,用d a,b 表示以a,b為端點的路徑的長度,它是該...
樹網的核 有關樹的直徑
輸入樣例 1 5 2 1 2 5 2 3 2 2 4 4 2 5 3 輸出樣例 1 5輸入樣例 2 8 6 1 3 2 2 3 2 3 4 6 4 5 3 4 6 4 4 7 2 7 8 3 輸出樣例 2 5n 500000 分析為了方便,st,ed表示直徑兩端的兩個點 首先來看樹的核是乙個點的情況...
O N 的我不會 樹網的核
題目描述 設t v,e,w 是乙個無圈且連通的無向圖 也稱為無根樹 每條邊帶有正整數的權,我們稱t為樹網 treenetwork 其中v,e分別表示結點與邊的集合,w表示各邊長度的集合,並設t有n個結點。路徑 樹網中任何兩結點a,b都存在唯一的一條簡單路徑,用d a,b 表示以a,b為端點的路徑的長...