走過的點的權值清零,那麼答案是唯一的,而且終點一定會是葉子節點;
那麼我們設初始節點為根節點,先遍歷一次樹,把所有葉子節點記錄下來,以及每個點的父節點,按照深度排序;
然後讓每個點沿著父親往上跳,每跳一步答案增加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 節點...