codevs 2370 小機房的樹 (LCA)

2021-07-23 13:56:53 字數 2183 閱讀 2066

codevs 2370 小機房的樹

題意:就是求裸的lca

題解:

#include

#include

#include

using

namespace

std;

const

int maxn=100000;

int fa[maxn][21];//第i個節點跳2^j次方步找到的父節點

int dis[maxn][21];//第i個節點跳2^j次方步找到的父節點之間的距離

bool vis[maxn];

int deep[maxn];

int n,m;

int first[maxn],next[maxn];

int tot=0;

struct cces[maxn];

void build(int ff,int tt,int pp)

; next[tot]=first[ff];

first[ff]=tot;

}void dfs(int x)

}for(int i=first[x];i;i=next[i])

}}int lca(int x,int y)

if(x==y)

}for(int i=20;i>=0;i--)

}return fa[x][0];

}int ask(int x,int f)

}return s;

}int main()

dfs(1);

scanf("%d",&m);

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

return

0;}

外送 codevs 4605 lca

題目描述 description

顧名思義,給一棵有根樹,以及一些詢問,每次詢問樹上的2 個節點a、b,求它

們的最近公共祖先.

輸入描述 input description

第一行乙個整數n.

接下來n 個數,第i 個數fi 表示i 的父親是fi. 若fi = 0,則i 為樹根.

接下來乙個整數m.

接下來m 行,每行2 個整數a、b,詢問節點(a xor lastans)、(b

xor lastans)的最近公共祖先. 其中lastans 為上乙個詢問的答案,

一開始lastans = 0.

輸出描述 output description

對每乙個詢問輸出相應的答案.

樣例輸入 sample input

100 1 2 3 2 4 2 5 4 9

3 92 7

7 81 1

0 66 11

6 310 7

2 15

7 7樣例輸出 sample output

3資料範圍及提示 data size & hint

30% n,m≤1000

100% n,m≤100,000

題解:

#include

#include

using

namespace

std;

const

int maxn=200000+10;

struct cces[maxn];

int fa[maxn][21];

int deep[maxn];

bool vis[maxn];

int first[maxn],next[maxn];

int tot=0;

void build(int ff,int tt)

; next[tot]=first[ff];

first[ff]=tot;

}void dfs(int x)

}for(int i=first[x];i;i=next[i])

}}int lca(int x,int y)

if(x==y)

}for(int i=20;i>=0;i--)

}return fa[x][0];

}int main()

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

}int m;

scanf("%d",&m);

int ans=0;

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

return

0;}

Codevs 2370 小機房的樹

2370 小機房的樹 時間限制 1 s 空間限制 256000 kb 題目等級 鑽石 diamond 傳送門題目描述 description 小機房有棵煥狗種的樹,樹上有n個節點,節點標號為0到n 1,有兩隻蟲子名叫飄狗和大吉狗,分居在兩個不同的節點上。有一天,他們想爬到乙個節點上去搞基,但是作為兩...

CODEVS 2370小機房的樹

題目描述description 小機房有棵煥狗種的樹,樹上有n個節點,節點標號為0到n 1,有兩隻蟲子名叫飄狗和大吉狗,分居在兩個不同的節點上。有一天,他們想爬到乙個節點上去搞基,但是作為兩隻蟲子,他們不想花費太多精力。已知從某個節點爬到其父親節點要花費 c 的能量 從父親節點爬到此節點也相同 他們...

CODEVS 2370 小機房的樹

題目描述 description 小機房有棵煥狗種的樹,樹上有n個節點,節點標號為0到n 1,有兩隻蟲子名叫飄狗和大吉狗,分居在兩個不同的節點上。有一天,他們想爬到乙個節點上去搞基,但是作為兩隻蟲子,他們不想花費太多精力。已知從某個節點爬到其父親節點要花費 c 的能量 從父親節點爬到此節點也相同 他...