武當派一共有 n
n 人,門派內 n
n 人按照武功高低進行排名,武功最高的人排名第 1
1,次高的人排名第 2
2,... 武功最低的人排名第 n
n。現在我們用武功的排名來給每個人標號,除了祖師爺,每個人都有乙個**,每個人可能有多個徒弟。
我們知道,武當派人才輩出,連祖師爺的武功都只能排行到 p
p。也就是說徒弟的武功是可能超過**的,所謂的青出於藍勝於藍。
請你幫忙計算每個人的所有子弟(包括徒弟的徒弟,徒弟的徒弟的徒弟....)中,有多少人的武功超過了他自己。
輸入第一行兩個整數 n, p(1 \le n \le 100000, 1 \le p \le n)n,
p(1≤
n≤10
0000
,1≤p
≤n)。
接下來 n-1n−
1 行,每行輸入兩個整數 u, v(1 \le u, v \le n)u,
v(1≤
u,v≤
n),表示 u
u 和 v
v 之間存在師徒關係。
輸出一行 n
n 個整數,第 i
i 個整數表示武功排行為i
i 的人的子弟有多少人超過了他。
行末不要輸出多餘的空格。
題解:首先利用dfs將樹上問題化為一維問題,然後用樹狀陣列按照逆序對的求法更新加求答案即可。(很水的。。)
#include#include#include#include#includeusing namespace std;
#define maxn 100005
vectorq[maxn];
int n,p,a[maxn],b[maxn],st,ed,c[maxn],ans[maxn];
void dfs(int u,int p)
for(int i=1;iprintf("%d ",ans[i]);
printf("%d\n",ans[n]);
return 0;
}
青出於藍而勝於藍 揭秘全新的 HWSQL
mysql是世界上最流行的開源資料庫,集可靠 易用 功能豐富 適用範圍廣等特點於一身,尤其對開發者友好,使其成為華為雲關係型資料庫 rds 使用者的首選。儘管mysql備受關注,更是各種應用的第一選擇,但也面臨著諸多挑戰,其社群版在雲上和線下技術侷限性會造成一定的影響,難以完全滿足使用者的需求。現由...
計蒜客 青出於藍勝於藍 dfs 樹狀陣列
題目描述 武當派一共有 n人,門派內 n 人按照武功高低進行排名,武功最高的人排名第 1,次高的人排名第 2,武功最低的人排名第 n。現在我們用武功的排名來給每個人標號,除了祖師爺,每個人都有乙個 每個人可能有多個徒弟。我們知道,武當派人才輩出,連祖師爺的武功都只能排行到 p。也就是說徒弟的武功是可...
計蒜客 青出於藍勝於藍 dfs序 歸併樹
武當派一共有 nn 人,門派內 nn 人按照武功高低進行排名,武功最高的人排名第 11,次高的人排名第 22,武功最低的人排名第 nn。現在我們用武功的排名來給每個人標號,除了祖師爺,每個人都有乙個 每個人可能有多個徒弟。我們知道,武當派人才輩出,連祖師爺的武功都只能排行到 pp。也就是說徒弟的武功...