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 }