在这里
题目B:给你一颗无向图,问最小的合并次数让这个图成为一个点,每一次合并可以合并中间没有其他路的线路
做法:找到入度为1的点,每次合并两个相邻的入度为1的点就行了,别忘了向取整
#include<iostream>
#include<algorithm>
#include<cstring>
#define LL long long
using namespace std;
const int N = 1e5+10;
void solve()
{
int in[N]={0};
int n;cin>>n;
for(int i=1;i<n;i++)
{
int x,y;
cin>>x>>y;
in[x]++;
in[y]++;
}
int ans=0;
for(int i=1;i<=n;i++)
if(in[i]==1)ans++;
ans++;
cout<<(ans/2)<<endl;
}
int main()
{
ios_base::sync_with_stdio(0); cin.tie(0);
int T;cin>>T;
while(T--)solve();
return 0;
}