時間限制: 1 s
空間限制: 128000 kb
題目等級 : ** gold
題目描述 description
大家都知道,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
1 #include 2 #include 3並查集,搜a會經過的節點,用b去相遇#define maxn 10001545
using
namespace
std;67
intn,a,b,ans;
8int
fa[maxn];
9bool
vis[maxn];
1011
void will_go(int
x)12
1718
int meet(int
x)19
2526
intmain()
2735 scanf("
%d%d
",&a,&b);
36will_go(a);
37 ans=meet(b);
38 printf("%d"
,ans);
39return0;
40 }
1 #include 2 #include 3 #include 4並不知道怎麼錯的#define maxn 100001556
using
namespace
std;78
intn,a,b,s,t,ans;
9int
fa[maxn];
1011
int find(int
x)12
1718
intget(int x,int
y)19
25else
26if(find(x)==y)
2731
else
3236}37
38int
main()
3947 scanf("
%d%d
",&s,&t);
48 ans=get
(s,t);
49 printf("%d"
,ans);
50return0;
51 }
1 #include 2 #include 3 #include 4lca倍增法5using
namespace
std;67
const
int n=1e6+5
;8 vectorvec[n];
9int n,x,y,deep[n],dad[n][20
];10
11void dfs(int
x)12
1920
int lca(int x,int
y)21
3132
intmain()
3341 dfs(1
);42 scanf("
%d%d
",&x,&y);
43 printf("%d"
,lca(x,y));
44return0;
45 }
Codevs 1503 愚蠢的寵物
時間限制 1 s 空間限制 128000 kb 題目等級 gold 題解檢視執行結果 大家都知道,sheep有兩隻可愛的寵物 乙隻叫神牛,乙隻叫神菜 有一天,sheep帶著兩隻寵物到狗狗家時,這兩隻可愛的寵物竟然迷路了 狗狗的家因為常常遭到貓貓的攻擊,所以不得不把家裡前院的路修得非常複雜。狗狗家前院...
rqnoj28 Stupid 愚蠢的寵物
題目描述 背景大家都知道,sheep有兩隻可愛的寵物 乙隻叫神牛,乙隻叫神菜 有一天,sheep帶著兩隻寵物到狗狗家時,這兩隻可愛的寵物竟然迷路了 描述狗狗的家因為常常遭到貓貓的攻擊,所以不得不把家裡前院的路修得非常複雜。狗狗家前院有n個連通的分叉結點,且只有n 1條路連線這n個節點,節點的編號是1...
PID28 Stupid 愚蠢的寵物
題鏈 題目描述 背景大家都知道,sheep有兩隻可愛的寵物 乙隻叫神牛,乙隻叫神菜 有一天,sheep帶著兩隻寵物到狗狗家時,這兩隻可愛的寵物竟然迷路了 描述狗狗的家因為常常遭到貓貓的攻擊,所以不得不把家裡前院的路修得非常複雜。狗狗家前院有n個連通的分叉結點,且只有n 1條路連線這n個節點,節點的編...