LOJ 10130 點的距離

2022-05-19 22:21:43 字數 772 閱讀 3016

在loj做的第一道題。

最開始想複雜了qwq 想的是在求lca的過程中統計向上的步數

其實此題很裸……就是求出u,v的lca,

再分別用兩點深度減去lca的深度,再加起來就好了qwq

---化簡---

\(dep[u]+dep[v]-2*dep[lca(u,v)]\)

#include #include #include #include #include #define maxn 100005

using namespace std;

struct qwq

;int tot=0,dep[maxn],fa[maxn][20],lg[maxn],h[maxn],n,m;

qwq e[maxn<<1];

inline void add(int x,int y)

void dfs(int f,int fat) }}

int lca(int x,int y)

if (x==y)

for (int i=lg[dep[x]-1];i>=0;i--) }

return fa[x][0];

}int maxn=-10;

inline void init()

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

dfs(maxn,0);

scanf("%d",&m);

for (int i=1,x,y;i<=m;i++) }

int main()

lca 點的距離

給定一棵有n個結點的樹,q個詢問,每次詢問點x到點y亮點之間的距離 第一行乙個n,表示有n個節。接下來有n 1行,每行2個整數x,y表示x,y之間有一條連邊。然後乙個整數q,表示有q次詢問,接下來q行每行2個整數x,y表示詢問x到y的距離。輸出q行,每行表示每個詢問的結果 6 1 21 3 2 42...

問題 G 點的距離

問題 g 點的距離 時間限制 5 sec 記憶體限制 128 mb 提交 57 解決 19 提交 狀態 討論版 命題人 add lm edit testdata 題目描述 給定一棵有 n個結點的樹,q個詢問,每次詢問點x到點 y亮點之間的距離 輸入 第一行乙個 n,表示有 n個節。接下來有 n 1行...

儲物點的距離

看似是一道劃分樹的題目,但是因為沒有修改操作,我們直接字首和即可。我們用字首和維護區間的物品總數,以及維護區間物品全部移動到第乙個點的花費。然後就根據 l,r,x之間的關係,推一推式子就行了。ac include define int long long using namespace std co...