NYOJ 170

View Code
 1 /*
 2 开始把这个题想复杂了,
 3 其实很简单:
 4 思路:
 5 找出所有度数为 1 的节点数,消除这些度数为1的节点至少需要多少遍
 6 原理:
 7 度数为 1 的节点只要把与之相连的那个节点去掉就成孤立的了
 8 因此我们再加一条边即使原来的那个邻接点坏了 还有一个边与之相连 
 9 */
10 
11 #include<iostream>
12 #include<cstdio>
13 #include<cstring> 
14 using namespace std; 
15 
16 short int a[10001];
17 
18 int main()
19 {
20   int i,x,y,n;
21   while(EOF!=scanf("%d",&n))
22    {
23      memset(a,0,sizeof(a));
24      n=n-1;
25      for(i=0;i!=n;++i)
26       {
27         scanf("%d%d",&x,&y);
28         a[x]++;
29         a[y]++;
30       }
31      int ct=0;
32      for(i=1;i<=n;++i)
33       if(1==a[i])ct++;
34      printf("%d\n",(ct+1)/2); 
35    }
36   system("pause");
37   return 0;
38 }

 

posted @ 2012-04-24 11:24  知行执行  阅读(183)  评论(0编辑  收藏  举报