問題描述
給定乙個公司的網路,由n臺交換機和m臺終端電腦組成,交換機與交換機、交換機與電腦之間使用網路連線。交換機按層級設定,編號為1的交換機為根交換機,層級為1。其他的交換機都連線到一台比自己上一層的交換機上,其層級為對應交換機的層級加1。所有的終端電腦都直接連線到交換機上。
當資訊在電腦、交換機之間傳遞時,每一步只能通過自己傳遞到自己所連線的另一台電腦或交換機。請問,電腦與電腦之間傳遞訊息、或者電腦與交換機之間傳遞訊息、或者交換機與交換機之間傳遞訊息最多需要多少步。
輸入格式
輸入的第一行包含兩個整數n, m,分別表示交換機的台數和終端電腦的台數。
第二行包含n - 1個整數,分別表示第2、3、……、n臺交換機所連線的比自己上一層的交換機的編號。第i臺交換機所連線的上一層的交換機編號一定比自己的編號小。
第三行包含m個整數,分別表示第1、2、……、m臺終端電腦所連線的交換機的編號。
輸出格式
輸出乙個整數,表示訊息傳遞最多需要的步數。
樣例輸入
4 2
1 1 3
2 1樣例輸出
4樣例輸入
4 4
1 2 2
3 4 4 4
樣例輸出
4思路:直接看做n+m個點的一棵樹,求樹的直徑即可。
//#pragma comment(linker, "/stack:102400000,102400000")
#include #include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;
typedef long long ll;
const int n=100010;
int head[n];
int ip;
struct edgenode
tu[n*2];
void init()
void add(int u,int v)
int st,ed,len;
void dfs(int now,int pre,int sum)
}int main()
for(int i=n+1; i<=n+m; i++)
len=0;
st=1;
dfs(1,-1,0);
ed=st;
len=0;
dfs(st,-1,0);
cout<
ccf 201503 4 網路延時 (100分)
問題描述 給定乙個公司的網路,由n臺交換機和m臺終端電腦組成,交換機與交換機 交換機與電腦之間使用網路連線。交換機按層級設定,編號為1的交換機為根交換機,層級為1。其他的交換機都連線到一台比自己上一層的交換機上,其層級為對應交換機的層級加1。所有的終端電腦都直接連線到交換機上。當資訊在電腦 交換機之...
CCF 201503 4 網路延時 兩種方法
ccf 201503 4 網路延時 傳送門 初看題 這不就是多源最短路徑裡長度最大的?floyd?不過看資料,這樣只能過70 的資料,正解肯定不是這樣.寫了份floyd交上去,70分.這說明出題人特別仁慈,給了這麼多放水的資料,可是這樣是不是太不公平?但是什麼是正解呢?1 n 10000,1 m 1...
CCF認證201503 4網路延時
原題鏈結 ccf認證201503 4網路延時 思路 題目中並沒有區分主機和交換機,所有可以把他們當成是一樣的。還有需要注意的是,將樹進行雙向的儲存。樹的直徑 樹中任意兩點距離的最大值 求法 從樹的任意一點y,通過bfs到達終點x 則x必為直徑的乙個端點。再從x通過bfs到達終點z。z必為直徑的另乙個...