PID28愚蠢的寵物(dfs 類似找最短公共祖先)

2021-08-28 15:03:45 字數 779 閱讀 4109

描述

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

n的範圍《=1000000

輸入格式

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

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

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

輸出格式

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

資料:

10

1 21 3

1 42 5

2 63 7

4 84 9

4 10

3 6輸出1

#include #define mxn 1000000+10

#define loc

using namespace std;

int n;

int x,y;

int f[mxn];

bool v[mxn];

void dfs(int x)

v[x]=true;

if (x!=1) dfs(f[x]);

}int main()

{ scanf("%d",&n);

for (int i=1; i

這個深搜效率比較好,遞迴的層數簡單比較少;

PID28 Stupid 愚蠢的寵物

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

rqnoj28 Stupid 愚蠢的寵物

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

Rqnoj28 愚蠢的寵物 最近公共祖先

本來想學並查集的,看了黃學長的部落格,有道題叫 愚蠢的寵物 就看了看,然而這道題和並查集並沒有多大關係,而是一道最近公共祖先的題,就學了最近公共祖先,以這道題為例,我所了解的求法有3種 1 是黃學長的方法。記錄x和y到每個節點的路徑長度,求到每個節點的路徑長度和,最小的乙個就是答案。是黃學長的 in...