洛谷 3398 倉鼠找sugar

2021-10-09 09:23:17 字數 3110 閱讀 9490

題目描述

小倉鼠的和他的基(me

i)(mei)

(mei)友(zi

)sug

ar(zi)sugar

(zi)su

gar住在地下洞穴中,每個節點的編號為1

n1~n

1n。地下洞穴是乙個樹形結構。這一天小倉鼠打算從從他的臥室(a)

(a)(a

)到餐廳(b)

(b)(b

),而他的**同時要從他的臥室(c)

(c)(c

)到圖書館(d)

(d)(d

)。他們都會走最短路徑。現在小倉鼠希望知道,有沒有可能在某個地方,可以碰到他的**?

小倉鼠那麼弱,還要天天被zzq

zzqzz

q大爺虐,請你快來救救他吧!

輸入格式

第一行兩個正整數n

nn和q

qq,表示這棵樹節點的個數和詢問的個數。

接下來n−1

n-1n−

1行,每行兩個正整數u

uu和v

vv,表示節點u到節點v之間有一條邊。

接下來q行,每行四個正整數a、b

、ca、b、c

a、b、c和d

dd,表示節點編號,也就是一次詢問,其意義如上。

輸出格式

對於每個詢問,如果有公共點,輸出大寫字母「y」

「y」「y

」;否則輸出「n」

「n」「n

」。輸入輸出樣例

輸入5 5

2 54 2

1 31 4

5 1 5 1

2 2 1 4

4 1 3 4

3 1 1 5

3 5 1 4輸出y

nyyy

說明/提示

本題時限1s1s

1s,記憶體限制128

m128m

128m

,因新評測機速度較為接近noi

pnoip

noip

評測機速度,請注意常數問題帶來的影響。

20

2020

%的資料 n

<

=200,q

<

=200

n<=200,q<=200

n<=2

00,q

<=2

00 40

4040

%的資料 n

<

=2000,q

<

=2000

n<=2000,q<=2000

n<=2

000,

q<=2

000

70

7070

%的資料 n

<

=50000,q

<

=50000

n<=50000,q<=50000

n<=5

0000

,q<=5

0000

100100

100%的資料 n

<

=100000,q

<

=100000

n<=100000,q<=100000

n<=1

0000

0,q<=1

0000

0解題思路

題意:現有a,b

,c,d

a,b,c,d

a,b,c,

d四點,判斷a

aa到b

bb的最短路和c

cc到d

dd的最短路有無交匯

以下為結論:

先套兩遍lca

lcalc

a,把a

aa和b

bb的,c

cc和d

dd的最近公共祖先求出來,然後求出a

aa和d

dd,b

bb和c

cc 中lca

lcalc

a深度最大的,把得到的深度與a

aa和b,c

b,cb,

c和dd

d的lc

alca

lca深度作比較。如果都大於等於a

aa和b

bb,c

cc和d

dd的lca

lcalc

a深度,則輸出「y」

「y」「y

」,否則輸出「n」

「n」「n

」 推導:

從上圖可以很容易得出: 取max

maxma

x後比較,都是大於等於,輸出y。。。

多推幾組資料,就能理解啦↖( ^ ω ^ )↗

**

#include

.h>

using namespace std;

int n,q,u,v,k,l,r,ll,rr,a1,a2,a3,a4,dep[

100010

],f[

100010][

22],head[

100010

],lg[

100010];

struct ca[

200010];

void

add(int x,int y)

void

dfs(int x,int fa)

}int lca

(int x,int y)

}return f[x][0

];}int main()

for(int i=

1;i<=n;i++

) lg[i]

=lg[i-1]

+(1<

==i)

;dfs(1

,0);

for(int i=

1;i<=q;i++

)}

洛谷3398 倉鼠找sugar

小倉鼠的和他的基 mei 友 zi sugar住在地下洞穴中,每個節點的編號為1 n。地下洞穴是乙個樹形結構。這一天小倉鼠打算從從他的臥室 a 到餐廳 b 而他的 同時要從他的臥室 c 到圖書館 d 他們都會走最短路徑。現在小倉鼠希望知道,有沒有可能在某個地方,可以碰到他的 小倉鼠那麼弱,還要天天被...

洛谷P3398 倉鼠找sugar

裸的lca。對於每次詢問,設a,b的lca為a,c,d的lca為b,分兩種情況討論 1 a與b的深度相同,此時二人相遇的充要條件為a b,即四個點的最近公共祖先相同。2 a與b深度不同,設a的深度大於b的深度,若二人相遇,則c或d與a的lca一定為a。include include define m...

洛谷P3398 倉鼠找sugar

題目大意 給你一棵 n n leqslant10 5 個點的樹,m m leqslant10 5 次詢問,每次詢問路徑 a b 和路徑 c d 是否有交點 題解 經過觀察發現若有交點,在 lca 或 lca 一定有交,判斷一下即可 卡點 無 c code include include includ...