北郵機試 bupt oj 267 最小堆

2021-09-13 09:47:33 字數 723 閱讀 3869

給定一棵帶權二叉樹,請判斷它是不是乙個最小堆。

一棵二叉樹是乙個最小堆,當且僅當對於樹上任意乙個節點,它的權值都小於或等於以它為根的子樹中的所有權值。

輸入資料第一行是乙個整數t(1<=t<=100),表示測試資料的組數。

對於每組測試資料:

第一行是乙個整數n(1<=n<=100),表示樹的節點個數。

接下來一行包含n個正整數,第i個整數valuei(1<=valuei<=1000)表示編號i的點的權值。

接下來n-1行,每行兩個整數u和v(1<=u,v<=n, u!=v),表示節點u是節點v的父節點。

測試資料保證給定的一定是一棵二叉樹,並且節點1是樹的根結點。

對於每組測試資料,如果給定的樹是乙個最小堆則輸出yes,否則輸出no。

3110

310 5 3

1 21 3

51 2 3 4 5

1 31 2

2 42 5

yes

noyes

#includeusing namespace std;

int a[110];

int main()

n--;

while(n--)

}if(flag)else

flag = true;

}return 0;

}

北郵機試 special

題目 設乙個正整數既是平方數又是立方數時,稱其為special數。輸入包含多組測試資料,第一行輸入測試資料的組數,接著在後續每行輸入n n 1000000000 的時候,請輸出1到n中包含的所有special數的個數。example inputs 21 64outputs 12 本來想的方法時間複雜...

北郵機試 複數集合

乙個複數 x iy 集合,兩種操作作用在該集合上 1 pop 表示讀出集合中複數模值最大的那個複數,如集合為空輸出 empty 不為空就輸出最大的那個複數並且從集合中刪除那個複數,再輸出集合的大小size 2 insert a ib 指令 a,b表示實部和虛部 將a ib加入到集合中 輸出集合的大小...

北郵複試機試之找最小數

第一行輸入乙個數n,1 n 1000,下面輸入n行資料,每一行有兩個數,分別是x y。輸出一組x y,該組資料是所有資料中x最小,且在x相等的情況下y最小的。輸入有多組資料。每組輸入n,然後輸入n個整數對。輸出最小的整數對。示例1 5 3 3 2 2 5 5 2 1 3 62 1思路簡單,方法一 兩...