思路:(此题只需统计度为1的点的个数,如果为偶数的话除以2,为奇数的话加上1再除以2,因为统计度为1的点的个数时每条边统计了两次)
此题要求每个点与其余的点断开时,这个点与剩余的其他点仍然是连通的,所以要求此点与外界相连的边至少有两条,这样断开一条边之后,与外界还有一条边可以连通。
代码如下:
#include<stdio.h>
#include<string.h>
int p[10008];
int main()
{
int n,a,b,sum;
while(scanf("%d",&n)!=EOF)
{
memset(p,0,sizeof(p));
for(int i=1;i<n;i++)
{
scanf("%d%d",&a,&b);
p[a]++;
p[b]++;
}
sum=0;
for(int i=1;i<=n;i++)
{
if(p[i]==1)
sum++;
}
if(sum%2)
printf("%d\n",sum/2+1);
else
printf("%d\n",sum/2);
}
return 0;
}