Codevs 1503 愚蠢的寵物

2022-04-02 06:03:20 字數 1412 閱讀 9407

時間限制: 1 s

空間限制: 128000 kb

題目等級 : ** gold

題解檢視執行結果

大家都知道,sheep有兩隻可愛的寵物(乙隻叫神牛,乙隻叫神菜)。有一天,sheep帶著兩隻寵物到狗狗家時,這兩隻可愛的寵物竟然迷路了……

狗狗的家因為常常遭到貓貓的攻擊,所以不得不把家裡前院的路修得非常複雜。狗狗家前院有n個連通的分叉結點,且只有n-1條路連線這n個節點,節點的編號是1-n(1為根節點)。sheep的寵物非常笨,他們只會向前走,不會退後(只向雙親節點走),sheep想知道他們最早什麼時候會相遇(即步數最少)。

輸入描述 input description

第1行:乙個正整數n,表示節點個數。

第2~n行:兩個非負整數a和b,表示a是b的雙親。(保證a,b<=n)

第n+1行:兩個非負整數a和b,表示兩隻寵物所在節點的位置。(保證a,b<=n)

輸出描述 output description

輸出他們最早相遇的節點號。

樣例輸入 sample input

101 2

1 31 4

2 52 6

3 74 8

4 94 10

3 6樣例輸出 sample output

資料範圍及提示 data size & hint

對於10%的資料,n<10^6

對於100%的資料,n<=10^6

/*

lca能解決的事為什麼要貼上搜尋的標籤。。

*/#include

#include

#include

using

namespace

std;

#define maxn 1000010

int n,s1,s2,head[maxn*2

],num,son[maxn],sz[maxn],top[maxn],fa[maxn],dep[maxn];

struct

nodee[maxn*2

];void insert(int

from,int

to)void dfs1(int u,int

father)

}void dfs2(int u,int

father)

}int lca(int x,int

y)

if(dep[x]return

x;

else

returny;}

intmain()

scanf(

"%d%d

",&s1,&s2);

dfs1(

1,0);

dfs2(

1,1);

printf("%d

",lca(s1,s2));

}

樹剖 lca

T1503 愚蠢的寵物 codevs

時間限制 1 s 空間限制 128000 kb 題目等級 gold 題目描述 description 大家都知道,sheep有兩隻可愛的寵物 乙隻叫神牛,乙隻叫神菜 有一天,sheep帶著兩隻寵物到狗狗家時,這兩隻可愛的寵物竟然迷路了 狗狗的家因為常常遭到貓貓的攻擊,所以不得不把家裡前院的路修得非常...

rqnoj28 Stupid 愚蠢的寵物

題目描述 背景大家都知道,sheep有兩隻可愛的寵物 乙隻叫神牛,乙隻叫神菜 有一天,sheep帶著兩隻寵物到狗狗家時,這兩隻可愛的寵物竟然迷路了 描述狗狗的家因為常常遭到貓貓的攻擊,所以不得不把家裡前院的路修得非常複雜。狗狗家前院有n個連通的分叉結點,且只有n 1條路連線這n個節點,節點的編號是1...

PID28 Stupid 愚蠢的寵物

題鏈 題目描述 背景大家都知道,sheep有兩隻可愛的寵物 乙隻叫神牛,乙隻叫神菜 有一天,sheep帶著兩隻寵物到狗狗家時,這兩隻可愛的寵物竟然迷路了 描述狗狗的家因為常常遭到貓貓的攻擊,所以不得不把家裡前院的路修得非常複雜。狗狗家前院有n個連通的分叉結點,且只有n 1條路連線這n個節點,節點的編...