11 02 猴猴吃蘋果

2021-09-29 06:43:41 字數 1092 閱讀 9607

走過的點的權值清零,那麼答案是唯一的,而且終點一定會是葉子節點;

那麼我們設初始節點為根節點,先遍歷一次樹,把所有葉子節點記錄下來,以及每個點的父節點,按照深度排序;

然後讓每個點沿著父親往上跳,每跳一步答案增加1,遇到根節點或者走過的節點就停止(遇到走過的點說明上面的點取過值了)

#include

#define n 100005

using

namespace std;

int n,rt;

int ls[n]

,cnt;

struct point

a[n*4]

;void

add(

int x,

int y)

int f[n]

,dep[n]

,lea[n]

,num,sum[n]

;bool vis[n]

;void

dfs(

int now,

int fa)if(

!flag) lea[

++num]

=now;

}bool

cmp1

(int a,

int b)

bool

cmp2

(int a,

int b)

intmain()

dfs(rt,rt)

;sort

(lea+

1,lea+num+

1,cmp1)

; vis[rt]=1

;for

(int i=

1;i<=num;

++i)

}sort

(lea+

1,lea+num+

1,cmp2)

;printf

("%d\n"

,rt)

;for

(int i=

1;i<=num;

++i)

printf

("%d\n"

,lea[i]);

return0;

}

比賽 樹 排序 猴猴吃蘋果

多畫圖多畫圖多畫圖!發現輸出的都是以k為根的葉子節點。1.先按以k為根,進行dfs處理。2.按照節點深度及編號對節點排序,深度越大排序越靠前,深度相同時,編號小的排在前面。3.依次處理每個節點 每次向上蹦,如果碰到以走過的節點或根節點就停止,記錄走過的步數。4.按照走過的步數及編號,對節點做第二次排...

11 02 猴猴吃香蕉

猴猴最愛吃香蕉了。每天猴猴出門都會摘很多很多的香蕉,每個香蕉都有乙個甜度,猴猴不一定要把所有的香蕉都吃掉,猴猴每天都有乙個心情值k,猴猴希望當天吃的香蕉滿足這麼乙個條件,這些香蕉的甜度乘積恰好等於k,但是猴猴並不知道有多少種方法,於是猴猴把這個問題交給你。揹包,依題目可得 只有k kk的約數才能作為...

11 02 猴猴的比賽

猴猴今天要和小夥伴猩猩比賽爬樹,為了公平不碰撞,猴猴和猩猩需要在不同的樹上攀爬。於是它們選了兩顆節點數同為n的樹,並將兩棵樹的節點分別以1 n標號 根節點標號為1 但兩棵樹的節點連線方式不盡相同。現在它們決定選擇兩個標號的點進行比賽。為了方便統計,規定它們比賽中必須都向上爬。即選定的賽段節點u 節點...