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

nyoj 170 網路的可靠性

網路的可靠性

時間限制: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
乍一看真被嚇了一跳,很少看到資訊這麼多的題目,洋洋灑灑的一大片,其實就是說現在只是可以接通了,但有的只有一條通向外界的路,讓你找出這樣的點,連線起來,所以用一個數組,迴圈一次,每個點過一次a[i]就加一次,然後選出只有一次的點,相加得s,每兩個點一條線,單數加一。

#include<stdio.h>
#include<string.h>
int c[10002];
int main()
{
     int n,i,s,a,b;
     while(scanf("%d",&n)!=EOF)
     {
         memset(c,0,sizeof(c));
         for(i=0;i<n-1;i++)
         {
             scanf("%d %d",&a,&b);
             c[a]++;
             c[b]++;
         }
         s=0;
         for(i=0;i<=n;i++)
         if(c[i]==1)
         s++;
         if(s%2==0)
         printf("%d\n",s/2);
         else
         printf("%d\n",(s+1)/2);
     }
     return 0;
}