1336 例3 1 找樹根和孩子

2021-09-11 15:44:56 字數 1109 閱讀 7216

時間限制: 1000 ms 記憶體限制: 65536 kb

提交數: 2511 通過數: 1325

給定一棵樹,輸出樹的根root,孩子最多的結點max以及他的孩子。

第一行:n(結點個數≤100),m(邊數≤200)。

以下m行:每行兩個結點x和y,表示y是x的孩子(x,y≤1000)。

第一行:樹根:root;

第二行:孩子最多的結點max;

第三行:max的孩子(按編號由小到輸出)。

8 74 1

4 21 3

1 52 6

2 72 842

6 7 8

no

#include

using namespace std;

int n,m,tree[

101]=;

int main (

)for

(i=1

;i<=n;i++)}

for(i=

1;i<=n;i++)if

(sum>max)

} cout

1;i<=n;i++

)return0;

}

for

(i=1

;i<=m;i++

)

讀入資料,因為樹的特點:每乙個節點都只有唯一的前驅元素,所以用陣列來的儲存每個子節點的父節點。

for

(i=1

;i<=n;i++

)}

找出根節點,根節點肯定沒有父節點,所以父節點為0的點就是根節點。

for

(i=1

;i<=n;i++)if

(sum>max)

}

找出孩子最多的節點,首先二重迴圈遍歷所有的節點,如果某個子結點儲存的父節點等於一層迴圈遍歷的數,說明二層迴圈遍歷的數是一層迴圈遍歷的數的父節點,子節點數++,最大的節點為maxroot。

cout

1;i<=n;i++

)

列印結果,如果父節點為maxroot,則子結點為最多的那個。

找樹根和孩子

給定一棵樹,輸出樹的根root,孩子最多的結點max以及他的孩子 輸入的第一行為t,表示測試資料的組數。對於每組測試資料的第一行 n 結點數 100 m 邊數 200 以下m行 每行兩個結點x和y,表示y是x的孩子 x,y 1000 對於每組測試資料 第一行 樹根 root。第二行 孩子最多的結點m...

找樹根和孩子

題目描述 給定一棵樹,輸出樹的根 root,孩子最多的結點 max 以及他的孩子。輸入 第一行 n 結點個數 100 m 邊數 200 以下 m 行 每行兩個結點 x 和 y,表示 y 是 x 的孩子 x,y 1000 輸出 第一行 樹根 root 第二行 孩子最多的結點 max 第三行 max 的...

樹 找樹根和孩子

題目描述 給定一棵樹,輸出樹的根root,孩子最多的結點max以及他的孩子 輸入第一行 n 結點數 100 m 邊數 200 以下m行 每行兩個結點x和y,表示y是x的孩子 x,y 1000 輸出第一行 樹根 root。第二行 孩子最多的結點max。第三行 max的孩子。樣例輸入8 7 4 14 2...