1. 程式人生 > >nyoj 170 網絡的可靠性

nyoj 170 網絡的可靠性

++ 新增 while 一行 區域 can nyoj 17 未來 tro

網絡的可靠性

時間限制:3000 ms | 內存限制:65535 KB

難度:3

描述

A公司是全球依靠的互聯網解決方案提供商,也是2010年世博會的高級贊助商。它將提供先進的網絡協作技術,展示其”智能+互聯“的生活概念,同時為參觀者提供高品質的個人體驗和互動,以”信息通信,盡情城市夢想”為主題貫穿。借助奇幻的劇場大屏幕和特效,展現信息通信技術的應用前景,通過生動形象的故事,向觀眾展示溝通無限制的未來社會前景。

為此,A公司為世博園的N個區域建立了視頻通信系統,其中每個區域建立一個基站,編號依次為1,2,3...,N。通過基站之間的通信線路為各區域的參觀者提供視頻服務。

已知在各基站之間已鋪設了一些光纖通訊線路,這些線路覆蓋了所有的區域,即任意兩個區域都可以進行視頻傳遞。但為了節約成本開支,目前只鋪設了

N-1條線路,同時為了減輕各基站的信息傳遞負載,每個基站最多有三條光纖通訊線路與之連接。

但在通信系統試運行期間,A公司發現當某個基站發生故障時,會導致其它區域之間無法進行信息傳遞。為了提高該通信網絡的可靠性,A公司準備在基站之間再新鋪設一些光纖線路,使得任意一個基站故障後,其它基站之間仍然可以通訊。

由於鋪設線路的成本昂貴,A公司希望新增設的光纖線路越少越好。A公司請求Dr. Kong來完成這個任務

輸入

有多組測試數據,以EOF為結束標誌。
第一行: N 表示有N個基站
接下來有N-1行:X Y 表示第X個基站與第Y個基站直連
1<=N<=10000

輸出

輸出一個整數,表示至少需新鋪設的光纖線路數

樣例輸入

8

1 3

3 2

5 3

5 4

5 6

2 7

2 8

樣例輸出

3

//計算只有一條路的點,再加一條路 
#include<stdio.h>
#include<string.h>
int main()
{
	int n;
	int a[10001];
	while(scanf("%d",&n)!=EOF)
	{	memset(a,0,sizeof(a));
		int num1,num2;
		int sum=0;
		for(int i=1;i<n;i++)
		{
			scanf("%d%d",&num1,&num2);
			a[num1]++;a[num2]++;
		}
		for(int i=1;i<=n;i++)
		{
			if(a[i]==1)
			{
				sum++;
			}
		}
		printf("%d\n",(sum+1)/2);
		
	}
}

  

nyoj 170 網絡的可靠性