倉鼠找sugar 倍增LCA

2021-10-02 03:46:10 字數 1341 閱讀 1394

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

小倉鼠那麼弱,還要天天被zzq大爺虐,請你快來救救他吧!

第一行兩個正整數n和q,表示這棵樹節點的個數和詢問的個數。

接下來n-1行,每行兩個正整數u和v,表示節點u到節點v之間有一條邊。

接下來q行,每行四個正整數a、b、c和d,表示節點編號,也就是一次詢問,其意義如上。

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

123

4567

891011

1213

1415

1617

1819

2021

2223

2425

2627

2829

3031

3233

3435

3637

3839

4041

4243

4445

4647

4849

5051

5253

5455

5657

5859

6061

6263

64

#includeusing namespace std;

#define init(a,b) memset(a,b,sizeof(a))

const int maxn=1e5+7;

int begin[maxn],fa[maxn][30],lg[maxn],depth[maxn];

struct edgeae[maxn<<1];

int tot=0,n,q;

int a,b,c,d;

void add(int x,int y);

begin[x]=tot++;

} void dfs(int now,int f)

return fa[x][0];

}bool judge(int x,int y)

int main(){

init(begin,-1);

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

for(int i=0;i

洛谷 3398 倉鼠找sugar

題目描述 小倉鼠的和他的基 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 到圖書館 ...

洛谷3398 倉鼠找sugar

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

洛谷 P3398 倉鼠找sugar(樹剖,LCA)

很顯然,就是在一棵樹上,求兩條路徑有沒有交點。我們可以先分別求出兩條路徑兩段點的lca,設為rtab和rtcd然後分以下情況討論 這時候可能會發現,會不會rtab和rtcd的深度相同這種情況呢?如果rtab和rtcd深度相同卻又不是同乙個節點 若是同乙個節點在第一種情況裡已經判斷 顯然兩條路徑不可能...