CCF 網路延時

2021-08-27 05:42:45 字數 1636 閱讀 7212

201503-4

試題名稱:

網路延時

時間限制:

1.0s

記憶體限制:

256.0mb

問題描述:

問題描述

給定乙個公司的網路,由n臺交換機和m臺終端電腦組成,交換機與交換機、交換機與電腦之間使用網路連線。交換機按層級設定,編號為1的交換機為根交換機,層級為1。其他的交換機都連線到一台比自己上一層的交換機上,其層級為對應交換機的層級加1。所有的終端電腦都直接連線到交換機上。

當資訊在電腦、交換機之間傳遞時,每一步只能通過自己傳遞到自己所連線的另一台電腦或交換機。請問,電腦與電腦之間傳遞訊息、或者電腦與交換機之間傳遞訊息、或者交換機與交換機之間傳遞訊息最多需要多少步。

輸入格式

輸入的第一行包含兩個整數n, m,分別表示交換機的台數和終端電腦的台數。

第二行包含n - 1個整數,分別表示第2、3、……、n臺交換機所連線的比自己上一層的交換機的編號。第i臺交換機所連線的上一層的交換機編號一定比自己的編號小。

第三行包含m個整數,分別表示第1、2、……、m臺終端電腦所連線的交換機的編號。

輸出格式

輸出乙個整數,表示訊息傳遞最多需要的步數。

樣例輸入

4 21 1 3

2 1樣例輸出

樣例說明

樣例的網路連線模式如下,其中圓圈表示交換機,方框表示電腦:

其中電腦1與交換機4之間的訊息傳遞花費的時間最長,為4個單位時間。

樣例輸入

4 41 2 2

3 4 4 4

樣例輸出

樣例說明

樣例的網路連線模式如下:

其中電腦1與電腦4之間的訊息傳遞花費的時間最長,為4個單位時間。

評測用例規模與約定

前30%的評測用例滿足:n ≤ 5, m ≤ 5。

前50%的評測用例滿足:n ≤ 20, m ≤ 20。

前70%的評測用例滿足:n ≤ 100, m ≤ 100。

所有評測用例都滿足:1 ≤ n ≤ 10000,1 ≤ m ≤ 10000。

分析:這道題要找兩結點之間訊息傳遞花費時間最長,即尋找以某節點為根節點的深度最大的兩結點間的「距離」,由於這道題目輸入的限制,根節點即結點1,首先尋找以結點1為根時最深的結點,找到該節點後,以該節點為根節點,尋找深度最大的結點。

注意的問題:這道題我注意的地方在於何時更新最大值,可以在剛進入函式時就更新最大值並記錄最深的結點,也可以在遞迴返回時更新最大值並記錄最深的結點。

#include #include #include #include using namespace std;

#define maxn 20000

vectorg[maxn];

bool visit[maxn];

int max_value = -1, s;

void init()

{ for(int i=0; i(可以在注釋的地方更新,也可以在後面更新。)

CCF 網路延時

試題編號 201503 4 試題名稱 網路延時 時間限制 1.0s 記憶體限制 256.0mb 問題描述 問題描述 給定乙個公司的網路,由n臺交換機和m臺終端電腦組成,交換機與交換機 交換機與電腦之間使用網路連線。交換機按層級設定,編號為1的交換機為根交換機,層級為1。其他的交換機都連線到一台比自己...

CCF 網路延時 樹的直徑

題目 問題描述 給定乙個公司的網路,由n臺交換機和m臺終端電腦組成,交換機與交換機 交換機與電腦之間使用網路連線。交換機按層級設定,編號為1的交換機為根交換機,層級為1。其他的交換機都連線到一台比自己上一層的交換機上,其層級為對應交換機的層級加1。所有的終端電腦都直接連線到交換機上。當資訊在電腦 交...

CCF認證201503 4網路延時

原題鏈結 ccf認證201503 4網路延時 思路 題目中並沒有區分主機和交換機,所有可以把他們當成是一樣的。還有需要注意的是,將樹進行雙向的儲存。樹的直徑 樹中任意兩點距離的最大值 求法 從樹的任意一點y,通過bfs到達終點x 則x必為直徑的乙個端點。再從x通過bfs到達終點z。z必為直徑的另乙個...