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串,他想知道有多少種口令方案可以選擇 不同的...