题目地址:​​点击打开链接​

思路:求出度数为1的点,如果为偶数,正好让他们22互连,如果为奇数则22互连之后,剩下的一个随意连

AC代码:

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <queue>
#include <stack>
#include <map>
#include <cstring>
#include <climits>
#include <cmath>
#include <cctype>

using namespace std;

int visit[10000];

int main()
{
int n;
int a,b,i;
while(scanf("%d",&n) != EOF)
{
memset(visit,0,sizeof(visit));
int sum = 0;
for(i=1; i<=n-1; i++)
{
scanf("%d%d",&a,&b);
visit[a]++;
visit[b]++;
}
for(i=1; i<=n; i++)
{
if(visit[i] == 1)
sum++;
}
printf("%d\n",sum/2+sum%2);
}
return 0;
}