廣東外語外貿大學第16屆程式設計競賽 B 蔥蔥樹

2021-10-10 07:50:33 字數 1526 閱讀 7962

b 蔥蔥樹

1000ms256mb

description

這是乙個在工作中的乙個真實樣例!聰哥十分慶幸他加入了acm協會,並成功解決了這個需求,你能解決這個需求嗎?

輸入一棵大小為n有根樹,節點編號為1到n且以編號為1的節點為根。這棵樹的結點有0~9的權值。接下來給出q個查詢

每個查詢輸入乙個結點的編號,輸出以該節點為根的子樹的葉子結點的權值數量。

input

乙個 n代表這棵樹的結點的數量 n( n <= 10^5 )

接下來n-1行輸入,每行輸入u,v代表v是u的直接子節點, 結點編號從1開始(1 <= u,v <= n)

接下來輸入一行,n個數字,代表每個結點的權值

接下來一行,有乙個數字q (q <= 10 ^ 4)

接下來一行,有q個數字,每個數字代表查詢的結點編號

output

輸出q行,每行9個數字,代表以該查詢的節點為根的子樹的葉子結點的0~9的權值的數量

sample input 1

51 2

2 32 4

2 51 2 3 4 4

55 4 3 2 1

sample output 1

0 0 0 0 1 0 0 0 0 0

0 0 0 0 1 0 0 0 0 0

0 0 0 1 0 0 0 0 0 0

0 0 0 1 2 0 0 0 0 0

0 0 0 1 2 0 0 0 0 0

題意給定一棵樹,以任一結點為根,輸出以該節點為根的子樹的葉子結點的權值數量。

思路

用vector模擬有向圖的操作,把u的直接子結點存下來,查詢的時候,用深搜操作搜尋每乙個直接子結點。

**

#include

using

namespace std;

#define ll long long

vector<

int>g[

100005];

ll quan[

100005

],ans=

0,nine[20]

;void

bfs(ll ck)

nine[quan[ck]]++

;if(g[ck]

.size()

!=0) nine[quan[ck]]--

;//cout<<"nine[ck]="<}

intmain()

for(i=

1;i<=n;i++

) cin>>quan[i]

; cin>>q;

for(i=

1;i<=q;i++

) cout<<

'\n';}

return0;

}

廣東外語外貿大學第16屆程式設計競賽C題

奇奇哥最近在玩一款叫 碼魂3 的遊戲,遊戲中有乙個著名的場景叫環印城箭陣。當你接近這個場景的時候,會忽然從地面下冒出很多幽靈弓箭手向你射出大量弓箭,奇奇哥第一次跑過去的時候被射成了刺蝟。奇奇哥試了很多次,都沒有通過箭陣,他非常傷心,彷彿失去了靈魂。正在他要放棄的時候,忽然產生了乙個奇妙的想法,如果他...

西安電子科技大學第16屆程式設計競賽網路同步賽

牛客網貌似直接複製會變亂碼,真的毒瘤。a 水題直接寫 includeusing namespace std int main cin n int res 0 while n else if flag cout c 直接暴力求出所有值存到陣列裡,排序後輸出第k大的。includeusing names...

西安電子科技大學第16屆程式設計競賽 E題

眾所周知,xieldy最常用的口令是 為了改變這一現狀,他random了乙個01串,並從中擷取了一段作為自己的口令。他選擇的口令滿足以下條件 1.口令串表示的二進位制數在十進位制下可以被表示為3k k 0 2.口令串可以有前導零。現已經random出了01串,他想知道有多少種口令方案可以選擇 不同的...